สร้างเค้าโครงแนวนอนในลิ้นชักการนำทาง

แอปพลิเคชันของฉันมีลิ้นชักการนำทางที่ประกอบด้วยคอนเทนเนอร์ส่วนย่อยหลักที่เปลี่ยนแปลงตามส่วนอื่นๆ เมื่อฉันต้องการเปลี่ยนหน้า หากเปลี่ยนเป็นแนวนอนเมื่อฉันอยู่ในหน้าอื่น แอปพลิเคชันจะกลับไปที่หน้าแรก (คอนเทนเนอร์แฟรกเมนต์) และจะเหมือนกันหากฉันเปลี่ยนจากแนวนอนเป็นแนวตั้ง ฉันจะแก้ไขปัญหานี้ได้อย่างไร? ฉันคิดว่าฉันต้องเปลี่ยนแปลงอะไรบางอย่างในกิจกรรมหลัก แต่ฉันไม่รู้จะทำอย่างไรจริงๆ

Java ของฉันเป็นแบบนี้จริงๆ

    public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
        NavigationView navigationView = null;
        MainFragment fragment = new MainFragment();
        android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
        fragmentTransaction.replace(R.id.fragment_container,fragment);
        fragmentTransaction.commit();

        public boolean onNavigationItemSelected(MenuItem item) {
            // Handle navigation view item clicks here.
            int id = item.getItemId();
            if (id == R.id.nav_home) {
                MainFragment fragment = new MainFragment();
                android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
                fragmentTransaction.replace(R.id.fragment_container, fragment);
                fragmentTransaction.commit();
            } else if (id == R.id.nav_breed) {
                // Handle the camera action
                BreedFragment fragment = new BreedFragment();
                android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
                fragmentTransaction.replace(R.id.fragment_container, fragment);
                fragmentTransaction.commit();
            }
            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            drawer.closeDrawer(GravityCompat.START);
            return true;
        }
    }

person Marco Panarelli    schedule 07.04.2016    source แหล่งที่มา
comment
ลองใช้รหัส github นี้ github.com/samerzmd/   -  person Muhammad Waleed    schedule 07.04.2016


คำตอบ (2)


สิ่งที่คุณทำโดยการกำหนด android:configChanges="keyboardHidden|orientation" ใน AndroidManifest.xml ของคุณเป็นการบอก Android เป็นหลัก: "เฮ้ ขอบคุณสำหรับความยอดเยี่ยมของคุณ แต่อย่าดำเนินการตามค่าเริ่มต้นเมื่อหมุนโทรศัพท์หรือความพร้อมใช้งานของแป้นพิมพ์เปลี่ยนแปลง ฉันรับผิดชอบอย่างเต็มที่และสามารถ จัดการเรื่องนี้ด้วยตัวเอง"

ดูเหมือน คุณได้แก้ไขปัญหาแล้ว แต่เพียงเพื่อให้ความชัดเจนมากขึ้นในอนาคต ปัญหา (ดังที่คุณทราบอยู่แล้ว) อยู่ที่การหมุน ฉันจินตนาการว่าบรรทัดต่อไปนี้มีอยู่ใน onCreate ของ MainActivity?

NavigationView navigationView = null;
MainFragment fragment = new MainFragment();
android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.fragment_container,fragment);
fragmentTransaction.commit();

ก่อนที่คุณจะระบุ android:configChanges="keyboardHidden|orientation" ใน AndroidManifest.xml ของคุณ onCreate ของ MainActivity ของคุณจะถูกเรียกว่า ทุกครั้ง เมื่อการวางแนวของอุปกรณ์เปลี่ยนไป

แล้วจริงๆจะแก้ปัญหาได้อย่างไร? เอกสารประกอบของ Android อธิบายได้ดีที่สุดและทุกสิ่งที่ฉันเพิ่งวางไว้ ที่นี่

ใช่ ต้องใช้เวลาทำงานมากขึ้นแต่ก็คุ้มค่าที่จะทำความเข้าใจและเพิ่มศักยภาพให้กับตัวเองในการตัดสินใจที่ถูกต้องตามนั้น

person ade.akinyede    schedule 09.04.2016

ฉันแก้ปัญหา. คุณเพียงแค่ต้องเพิ่ม android:configChanges="screenSize|orientation" ลงใน AndroidManifest.xml จากนั้นคุณก็สามารถหมุน pohone ได้โดยไม่ต้องกลับไปที่ส่วนของโฮม

person Marco Panarelli    schedule 09.04.2016