我有一个带有包含后退按钮的 ActionBar 的 AppCompatActivity。我正在启动一个内部 Fragment 类,它在 Activity View 顶部打开一个 View 。硬件后退按钮关闭 Fragment,并且 Activity View 可见。但是,如果我在 Fragment View 中按下 ActionBar 上的后退按钮,应用程序将返回到 MainActivity( Activity 父级)。我想隐藏 ActionBar,或者理想情况下为其提供与硬件按钮相同的行为,因为这对于用户来说显然是令人讨厌的行为。我尝试在 Activity 中创建 ActionBar 的实例,如下所示
ActionBar actionBar = getActionBar();
actionBar.setHomeAsUpEnabled(true);
这在运行时给了我一个NullPointerException
。我已经搜索过了,但被难住了。
也尝试过这个,其中 mFragmentManager 在与我的 Fragment 类开始事务之前有 .addToBackStack() 。
@Override
public void onBackPressed() {
int count = mFragmentManager.getBackStackEntryCount();
if (count == 0) {
super.onBackPressed();
//additional code
} else {
mFragmentManager.popBackStack();
}
Log.i(LOG_TAG, "onBackPressed. Count = " + count);
}
~没有错误,但 ActionBar 后退按钮行为没有改变。没有记录日志消息~
我的错误,除了硬件后退按钮之外,此方法确实改变了行为。当尝试在 mFragmentManager
上尝试 getBackStackCount()
时,它导致了 NullPointerException
。
最佳答案
操作栏“后退”按钮实际上是向上按钮,根据 Google 的说法,它的行为应该与硬件后退按钮不同:https://developer.android.com/training/design-navigation/ancestral-temporal.html
话虽如此,您可以拦截此按钮上的触摸并对其执行任何您想要的操作。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
// your code here
}
return super.onOptionsItemSelected(item);
}
关于java - ActionBar 后退按钮从内部 Fragment 完成 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45305921/