当屏幕旋转变化碎片时,Homeasup消失了



我有一个主动,我加载了不同的片段(同时仅一个(。

我也实现了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);

即使在旋转变化方面,它也会保留状态。它将保证片段不会被摧毁和重新创建方向更改

最新更新