在导航栏中创建横向布局

时间:2016-04-07 15:34:06

标签: android android-fragments navigation-drawer

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

通过在android:configChanges="keyboardHidden|orientation"中定义AndroidManifest.xml,你所做的事实上是在告诉Android:“嘿,谢谢你的精彩但不要在手机旋转时执行默认操作或键盘可用性的变化。我完全负责并且可以自己处理“。

所以似乎你已经解决了问题但只是为了让你更清晰地向前发展,问题(正如你所知)是旋转的。所以我想你上面onCreate的{​​{1}}中存在以下几行?

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的{​​{1}}将被称为每次设备方向发生变化。

那么真正如何解决问题呢? Android文档最能说明这一点,以及我刚刚列出的所有内容here

是的,它需要更多的工作,但值得理解并赋予自己相应的正确决策权。