gpt4 book ai didi

android - 如何将 onBackPressedCallback 添加到 fragment ?

转载 作者:行者123 更新时间:2023-12-05 00:08:46 25 4
gpt4 key购买 nike

我已经在几个地方看到过这一点,但由于没有在线示例,因此无法完全弄清楚如何实现它,我想知道我是否误解了它的含义。

the android developer link for addOnBackPressedCallback

我想知道这是否意味着我可以在我的 fragment 中添加一个回调来获取 onBackPressed()在它到达 Activity 之前。

在我的 fragment 中,我实现了

implements OnBackPressedCallBack

然后实现方法
@Override
public boolean handleOnBackPressed() {
Log.d(TAG, "handleOnBackPressed: hello");
return true;
}

但它没有拿起它并直接进入主要 Activity onBackPressed() .

我继续阅读,发现我的 fragment 需要从 FragmentActivity 扩展
public class MainExampleFragment extends FragmentActivity implements View.OnClickListener, OnBackPressedCallback {

而不是
appCompatActivity.getSuppportFragmentManager

打电话
FragmentActivity.getSupportFragmentManager 

相反,但这会在尝试设置 bundle 时在 Fragment.newInstance 方法中引发错误。

有没有人做这件事的信息,谢谢

最佳答案

正如@Derek Zhu 指出的那样,如果您在 Activity 中覆盖 onBackPressed ,则 fragment 的 onBackPressedCallback 似乎不起作用。我发现如果我想在 Activity 中也使用它,那么我需要使用 onBackPressedDispatcher.addCallback还有。

Activity :

onBackPressedDispatcher.addCallback(
this,
object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
Log.d(TAG, "Activity back pressed invoked")
// Do custom work here

// if you want onBackPressed() to be called as normal afterwards
if (isEnabled) {
isEnabled = false
requireActivity().onBackPressed()
}
}
}
)

分段:
requireActivity().onBackPressedDispatcher.addCallback(
this,
object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
Log.d(TAG, "Fragment back pressed invoked")
// Do custom work here

// if you want onBackPressed() to be called as normal afterwards
if (isEnabled) {
isEnabled = false
requireActivity().onBackPressed()
}
}
}
)

上面的结果是会调用Fragment back press,然后Activity back press。

关于android - 如何将 onBackPressedCallback 添加到 fragment ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55074497/

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