gpt4 book ai didi

java - ActionBar 后退按钮从内部 Fragment 完成 Activity

转载 作者:行者123 更新时间:2023-12-02 12:30:11 26 4
gpt4 key购买 nike

我有一个带有包含后退按钮的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com