【问题标题】:Detect backbutton pressed in Fragment检测片段中按下的后退按钮
【发布时间】:2013-11-06 12:30:29
【问题描述】:

我需要检测 Fragment 中按下的后退按钮。

我的应用程序开始在 Fragment 中下载数据,所以我需要在按下后退按钮时停止下载(也做一些操作),如果按下主页按钮则不需要。所以我不能使用 onPause(),因为它在两种情况下都会调用。

我使用addToBackStack(null),但是我需要在当前片段中做一些操作(停止下载和),然后返回到前一个片段。

getSupportFragmentManager()
   .beginTransaction()
   .replace(R.id.content_frame, fragment)
   .addToBackStack(null)
   .commit();   

【问题讨论】:

  • 在片段的 onDestroyView() 中执行此操作

标签: android android-fragments


【解决方案1】:

当你完成了你想要在片段中做的事情后,你可以使用类似这样的东西来删除当前片段。如果最后一个片段被添加到堆栈中(如您所述),则删除当前片段将自动显示最后一个片段。

this.getActivity().getSupportFragmentManager().beginTransaction()
            .remove(this).commit();

this.getActivity().getFragmentManager().beginTransaction()
            .remove(this).commit();

【讨论】:

  • 谢谢。但我不需要删除片段。
  • 那么如果你不想删除当前片段,你将如何返回到最后一个片段?
【解决方案2】:

看看这个link
在您的活动中,您可以覆盖 onBackPressed() et 然后调用 popBackStack

【讨论】:

  • 好的!如果你使用 asyncTask,你可以在你的 onPause 方法上使用 asyncTask.cancel()。如果你想做一个特定的工作,当你调用 asyncTask.cancel() 时,AsyncTask 调用 onCancelled()。覆盖它!
猜你喜欢
  • 1970-01-01
  • 2017-08-09
  • 1970-01-01
  • 2016-12-08
  • 1970-01-01
  • 1970-01-01
  • 2015-05-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多