我的应用程序有一个导航抽屉,它由一个主片段容器组成,当我想更改页面时,它会随其他片段一起更改。如果我在另一个页面中切换到横向,应用程序将返回主页(碎片容器)。如果我从横向切换到纵向,情况也是一样的。我该如何解决这个问题?我想我必须改变一些主要活动,但我真的不知道该怎么做。
我的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:"嘿,感谢您的出色表现,但当手机旋转或键盘可用性发生变化时,请不要执行默认操作。我完全负责,可以自己处理"。
因此,似乎您已经解决了问题,但只是为了让您更清楚地前进,问题(正如您所知)在于轮换。所以我想上面的几行存在于你的MainActivity
的onCreate
中?
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"
之前,每次设备方向更改时,MainActivity
的onCreate
都会被调用。
那么如何真正解决问题呢?Android文档最好地解释了这一点,以及我刚刚在这里列出的所有内容。
是的,这需要更多的工作,但值得理解,并赋予自己相应的权力,做出正确的决定。