如何在超过 10 次以上的片段中管理 BackPress?
Posted
技术标签:
【中文标题】如何在超过 10 次以上的片段中管理 BackPress?【英文标题】:How to manage BackPress in fragment more than 10+ time? 【发布时间】:2021-05-02 00:06:06 【问题描述】:我想在片段中管理后台,我知道通过调用 onBackpress 方法来处理活动中的后台。
@Override
public void onBackPressed()
super.onBackPressed();
但我在 Activity 中实现了 Fragment 并对其进行了 10 多次替换,所以每当我按下回键应用程序时都会关闭。
所以我想多次管理片段中的背压。
如果有人知道最佳解决方案,请给出您的答案,我已经尝试了类似问题给出的许多解决方案,但它不起作用。
在此先感谢 :)
【问题讨论】:
【参考方案1】:您可以使用这种方式在 Fragment 上处理背压
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState)
super.onViewCreated(view, savedInstanceState);
if (getView() != null)
getView().setFocusableInTouchMode(true);
getView().requestFocus();
getView().setOnKeyListener(new View.OnKeyListener()
@Override
public boolean onKey(View view, int keyCode, KeyEvent keyEvent)
if (keyEvent.getAction() == KeyEvent.ACTION_DOWN)
if (keyCode == KeyEvent.KEYCODE_BACK)
if (Constants.getInstance().checkIsAudioPlay())
stopAudioPlaying();
refreshView();
btnPlayALL.setText(R.string.play_all);
return true;
else
return false;
return false;
);
【讨论】:
【参考方案2】:在您的活动的onBackPressed()
方法中添加以下内容:
FragmentManager fragmentManager = getSupportFragmentManager();
if (fragmentManager.getFragments().size() > 0)
fragmentManager.popBackStack();
else
super.onBackPressed();
另外不要忘记覆盖片段的onPause()
方法并处理您希望片段在按下后退按钮时完成的任务。
【讨论】:
以上是关于如何在超过 10 次以上的片段中管理 BackPress?的主要内容,如果未能解决你的问题,请参考以下文章