我的应用包含两个片段:列表片段和详细信息片段。一切正常。但是当我改变方向时。一切都搞砸了。我尝试过这样的方法来改变方向,它适用于横向到纵向的情况,但不适用于纵向到横向。谁能帮我。这是我尝试过的代码:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Fragment listfragment = getSupportFragmentManager().findFragmentById(
R.id.fragment_container);
Fragment detailfragment = getSupportFragmentManager().findFragmentById(
R.id.fragment_container2);
FrameLayout fragmentLayout2;
fragmentLayout2 = (FrameLayout) findViewById(R.id.fragment_container2);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
if (listfragment != null) {
replaceFragment(listfragment);
}
if (detailfragment != null) {
replaceNewFragment(detailfragment);
}
}
if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
fragmentLayout2.setVisibility(View.GONE);
}
}
答案 0 :(得分:0)
您需要覆盖mainActivity上的onConfigurationChanged,它扩展ActionBarActivity才能使其正常工作。这样的事情应该有效:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
getActionBar().setIcon(R.drawable.my_icon_land);//getSupportActionBar() for support library
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
getActionBar().setIcon(R.drawable.my_icon_potrait);
}
}
答案 1 :(得分:0)
每当您想要更改ActionBar中的图标时,请致电invalidateOptionsMenu()
。这将重新绘制ActionBar项目,从而调用onPrepareOptionsMenu()
。在onPrepareOptionsMenu()
内,您可以检查方向并设置菜单项的相应布局或只更改图标。
由于您希望在方向更改时重新创建菜单,因此可以在invalidateOptionsMenu()
内调用onCreate()
方法,因为方向更改时会调用它。