Buat Tata Letak lanskap di panel samping navigasi

Aplikasi saya memiliki laci navigasi yang disusun oleh wadah fragmen utama yang berubah dengan fragmen lain ketika saya ingin mengubah halaman. Jika beralih ke lanskap ketika saya berada di halaman lain, aplikasi kembali ke halaman beranda (wadah fragmen). Dan sama jika saya beralih dari lanskap ke potret. Bagaimana saya bisa mengatasi masalah ini? Saya rasa saya harus mengubah sesuatu di aktivitas utama tetapi saya benar-benar tidak tahu bagaimana melakukannya.

Java saya sebenarnya seperti ini.

    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 sumber
comment
coba kode github ini github.com/samerzmd/   -  person Muhammad Waleed    schedule 07.04.2016


Jawaban (2)


Apa yang telah Anda lakukan dengan mendefinisikan android:configChanges="keyboardHidden|orientation" di AndroidManifest.xml pada dasarnya memberi tahu Android: "Hai, terima kasih atas kehebatan Anda, tetapi JANGAN melakukan operasi default saat ponsel diputar atau ketersediaan keyboard berubah. Saya bertanggung jawab penuh dan dapat menangani ini sendiri".

Jadi sepertinya tampaknya Anda telah menyelesaikan masalahnya, tetapi untuk memberi Anda kejelasan lebih lanjut, masalahnya (seperti yang sudah Anda ketahui) ada pada rotasi. Jadi saya bayangkan baris berikut di atas ada di onCreate dari MainActivity Anda?

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

Sebelum android:configChanges="keyboardHidden|orientation" yang Anda tentukan di AndroidManifest.xml, onCreate dari MainActivity Anda akan dipanggil setiap orientasi perangkat berubah.

Jadi, bagaimana cara benar-benar mengatasi masalah ini? Dokumentasi Android paling baik menjelaskan hal itu, dan semua yang baru saja saya paparkan di sini.

Memang benar, hal ini membutuhkan lebih banyak upaya, tetapi memahami dan memberdayakan diri Anda sendiri dengan mengambil keputusan yang tepat adalah hal yang bermanfaat.

person ade.akinyede    schedule 09.04.2016

Saya memecahkan masalahnya. Anda hanya perlu menambahkan android:configChanges="screenSize|orientation" ke AndroidManifest.xml dan kemudian Anda dapat memutar pohon tanpa kembali ke fragmen rumah.

person Marco Panarelli    schedule 09.04.2016