在导航抽屉中进行横向布局



我的应用程序有一个导航抽屉,它由一个主片段容器组成,当我想更改页面时,它会随其他片段一起更改。如果我在另一个页面中切换到横向,应用程序将返回主页(碎片容器)。如果我从横向切换到纵向,情况也是一样的。我该如何解决这个问题?我想我必须改变一些主要活动,但我真的不知道该怎么做。

我的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;
        }
    }

我解决了这个问题。你只需要将android:configChanges="screenSize|orientation"添加到AndroidManifest.xml,然后你就可以旋转pohone而不返回到主片段。

您在AndroidManifest.xml中定义android:configChanges="keyboardHidden|orientation"所做的基本上是告诉Android:"嘿,感谢您的出色表现,但当手机旋转或键盘可用性发生变化时,请不要执行默认操作。我完全负责,可以自己处理"。

因此,似乎您已经解决了问题,但只是为了让您更清楚地前进,问题(正如您所知)在于轮换。所以我想上面的几行存在于你的MainActivityonCreate中?

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

AndroidManifest.xml中指定的android:configChanges="keyboardHidden|orientation"之前,每次设备方向更改时,MainActivityonCreate都会被调用

那么如何真正解决问题呢?Android文档最好地解释了这一点,以及我刚刚在这里列出的所有内容。

是的,这需要更多的工作,但值得理解,并赋予自己相应的权力,做出正确的决定。

最新更新