我有一个带有后退按钮的ActionBar的AppCompatActivity。我正在启动一个内部Fragment类,它在Activity视图的顶部打开一个View。硬件后退按钮关闭片段,活动视图可见。但是,如果我在Fragment视图中按下ActionBar上的后退按钮,应用程序将返回到MainActivity,即Activities父级。我想要隐藏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后退按钮的行为没有改变。没有记录日志消息〜
我的错误,这个方法确实改变了行为但是对于硬件后退按钮。在NullPointerException
上尝试getBackStackCount()
时,它会导致mFragmentManager
。
答案 0 :(得分:1)
操作栏"返回"按钮实际上是 Up 按钮,根据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);
}
答案 1 :(得分:0)
请尝试使用getSupportActionBar()
。