【问题标题】:Clear Fragment content when back button pressed [duplicate]按下后退按钮时清除片段内容[重复]
【发布时间】:2017-12-03 03:54:05
【问题描述】:

我希望在按下返回按钮时清除我的片段。

所需周期: 当我在 Activity 的列表视图中单击 item1 时,我希望它在我的 Fragment 上仅显示 item1 内容。当我按下并点击 item2 时,我只想要 item2 那里。但目前,item1item2 都在我的片段中。

这就是我启动片段的方式:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_fixtures);

        if (savedInstanceState == null) {
            mFixtureInfo = new FixtureInfoFragment();
            getSupportFragmentManager().beginTransaction()
                    .replace(R.id.containerMain, mFixtureInfo)
                    .commit();
        }
    }

【问题讨论】:

  • 为片段提供您的 xml 代码。
  • 似乎最简单的方法是分别为 item1 和 item2 内容设置两个片段,然后只需使用常规 FragmentManager 在“容器”中切换两个片段
  • 请不要重复提问。只需使用您拥有的任何新信息、您尝试过的任何新代码或任何已发布答案不起作用的解释来编辑此帖子,就会将其排在活动队列的顶部。我已将其作为新版本的副本关闭,因为您目前正在那里获得答案,但是,将来,请只编辑原始版本。
  • 对不起,我是新来的。我会确保我不会再这样做了

标签: java android listview android-fragments fragment


【解决方案1】:

当您希望片段打开时,尝试调用片段的新实例。

每次都会创建一个新的片段。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_fixtures);

    if (savedInstanceState == null) {
      FixtureInfoFragment   mFixtureInfo = new FixtureInfoFragment();
        getSupportFragmentManager().beginTransaction()
                .replace(R.id.containerMain, mFixtureInfo)
                .commit();
    }
}

不全局声明你 FixtureInfoFragmet。

【讨论】:

  • 我试过了,问题仍然存在。当我在我的 Listview 中单击 item1 时,我希望它在 Fragment 上仅显示 item1 内容。当我按下并单击 item2 时,我只想要 item2 那里。但目前,item1 和 item2 都在我的片段中。
【解决方案2】:

你应该清除活动instantSatate holder中的片段的backstack

@override onBackPressed(){ clearBackTrace(intent); }

【讨论】:

  • 什么是 clearBackTrace ???
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多