【问题标题】:Go back to a Fragment from an Activity onBackpress从 Activity onBackpress 回到 Fragment
【发布时间】:2016-12-01 13:39:07
【问题描述】:

我尝试使用以下代码从 Fragment extends Fragment 移动到 Activity extends 活动。

 Intent mIntent = new Intent(getActivity(), UserProfile.class);
            Bundle bundle = new Bundle();
            bundle.putBoolean(Constant.isFromChatScreen, false);
            mIntent.putExtras(bundle);
            startActivity(mIntent);

BaseActivity.java 我有片段A,片段B,片段C..来自Fragment A 我搬到Userprofile.java 现在我想回到片段A onBackPressed 我该怎么做?

【问题讨论】:

  • 这似乎有点奇怪,但我可能会误解你的问题。片段托管在活动中,那么为什么不交换片段并通过后台堆栈来操作它们呢?
  • 在 BaseActivity.java 我有 Fragment A、Fragment B、Fragment C..from Fragment A 我移到 Userprofile.java 现在我想移回 Fragment A。
  • startActivityForResult() ?
  • 我想做onBackPressed
  • 刚刚完成对背压stackoverflow.com/questions/4778754/…的UserProfile活动

标签: android android-fragments android-activity android-fragmentactivity


【解决方案1】:

查看 Google 文档以查找 findFragmentByTag() here

您也可以在从 FragmentTransaction 调用片段时使用 addToBackStack()

【讨论】:

    【解决方案2】:

    当你进行片段事务时,只需在提交前使用addToBackStack(null),然后当你按下后退按钮时,你会回到你的片段。

    【讨论】:

    • 他正在开始一个新的活动。您必须考虑活动的生命周期如何变化。
    • 您可以看到 Hadi Samadbin 的评论,链接中显示我的答案是正确的。他正在开始一个新的活动,如果他按下后退按钮,他将进入上一个活动(这是包含片段 A 的活动),如果他将 addToBackStack 转换,他将看到片段 A,因为它是在开始新活动的意图之前他使用的最后一个片段。
    【解决方案3】:

    老问题,但任何想寻找答案的人都可以这样做:

    @Override
    public void onBackPressed() {
      finish();
    }
    

    finish()“关闭”当前Activity并带你回到Fragment(实际上是带你回到托管Fragment的Activity)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多