我有一个主动,我加载了不同的片段(同时仅一个(。
我也实现了homeasup,它运行良好,但是当我打开片段时,后箭头出现在左上角,但是如果我更改屏幕方向,则会出现汉堡菜单。我认为,当活动在屏幕方向上被破坏时,片段背面也被破坏了,我如何避免这种情况?
主要活动
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
private HashMap<String, String> connectedUserDataMap;
private FloatingActionButton fab;
private TextView textAccountName;
private ImageView profileImage;
private Bitmap profileImageBitmap;
private boolean doubleBackToExitPressedOnce = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState == null) { //Main menu
MainFragment fragment = new MainFragment();
android.support.v4.app.FragmentTransaction fragmentTransaction =
getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.fragment_container, fragment);
fragmentTransaction.commit();
}
//listener onBackStackChangedListener
getSupportFragmentManager().addOnBackStackChangedListener(new
FragmentManager.OnBackStackChangedListener() {
@Override
public void onBackStackChanged() {
if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true); // show back button
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
} else {
//show hamburger
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
toggle.syncState();
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
drawer.openDrawer(GravityCompat.START);
}
});
}
}
});
}
在片段中,我与此问题没有任何关系,只有片段
编辑1:
我在片段中做一些system.out.printlns
System.out.println("BACKSTACK COUNT =
"+getActivity().getSupportFragmentManager().getBackStackEntryCount());
我可以看到getBackStackentrycount((= 1,但是我的主动行为中的代码无法执行,因为背包没有更改,也没有打印后背箭头
问题是,当我打开片段时,后箭头在左上角,但是当我旋转屏幕时,汉堡菜单不应
时出现。解决:我也将与OnbackStackChangedListener关联的代码也放在MainActivity otCreate方法中!
感谢所有!
您是否尝试过添加
android:configChanges="orientation"
在活动标签中,您的活动在您的活动标签中不要在方向变化时被破坏吗?
编辑1
检查这个问题似乎与您的问题相似:当方向更改
尝试在片段的ongreate((中添加下面的行:
this.setRetainInstance(true);
即使在旋转变化方面,它也会保留状态。它将保证片段不会被摧毁和重新创建方向更改