【问题标题】:Android: Disappearing "up"-button at toolbar when opening fragment a second timeAndroid:第二次打开片段时工具栏上的“向上”按钮消失
【发布时间】:2015-12-11 20:49:49
【问题描述】:

我创建了一个带有导航抽屉的 android 应用程序。 为此,我使用了 android studio 模板 Navigation Drawer Activity。 为了组合 appbar 和抽屉式导航,它使用 ActionBarDrawerToggle 类。

在我的活动中,我在不同的片段之间切换。其中一个具有包含更详细片段的层次结构。 这是一个类似question 的构造。

因此,当您打开第一个片段时,您可以看到抽屉切换。 然后单击一个列表项,它将第一个片段替换为更详细的第二个片段。 之后出现向上按钮,而不是原来的抽屉切换。 当您单击向上按钮时,您将返回到第一个片段,并且向上按钮变回抽屉切换。

当您再次打开第二个片段时,没有抽屉切换和向上按钮。 当您按下平板电脑后退按钮时,切换将再次出现,但向上按钮不会出现,直到您重新启动应用程序。

要将抽屉开关更改为向上按钮,我在第二个片段的 onCreate 中使用以下命令:

第二个片段onCreate()

//let the drawer toggle disappear
activity.toggle.setDrawerIndicatorEnabled(false); 
//let the up button appear
activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

向上按钮的功能是通过以下命令实现的:

活动onCreate()

toggle.setToolbarNavigationClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onBackPressed();
            }
});

活动onBackPressed()

int count = getFragmentManager().getBackStackEntryCount();
if (count < 1) {
     super.onBackPressed();
     Intent intent = new Intent(Intent.ACTION_MAIN);
     intent.addCategory(Intent.CATEGORY_HOME);
     startActivity(intent);
} else {
     getFragmentManager().popBackStack();
     if (count == 1) {
          toggle.setDrawerIndicatorEnabled(true);
     }
}

打开我在第一个片段中使用此代码制作的第二个片段:

第一个片段ownOpenMethod():

activity.getFragmentManager().beginTransaction()
     .replace(R.id.content_frame, FirstFragment.newInstance())
     .addToBackStack(null).commit();

用户 Wolfram Rittmeyer 报告了这个问题here

使用工具栏时,我必须将显示选项切换为不使用 家在此期间。否则 setDisplayOptions() ToolbarWidgetWrapper 中的方法(内部 android.support.v7.internal.widget 包)不会重新创建图标 第二次输入同一个片段时。把这个留在这里 当其他人也偶然发现这个问题时。

但我不明白他的意思。 有人遇到同样的问题或任何示例代码如何解决?

【问题讨论】:

  • 尝试在打开片段mDrawerToggle.syncState();时添加此代码
  • 我试过了,但没有任何改变。它仍然消失了。

标签: android android-fragments navigation-drawer android-toolbar up-navigation


【解决方案1】:

我想通了!这意味着在

@Override
public void onBackPressed() {
...
}

你需要包括这个:

getSupportActionBar().setDisplayHomeAsUpEnabled(false);

所以第二次会出现你的后退图标。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多