gpt4 book ai didi

android - fragment 从后台消失

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:30:50 24 4
gpt4 key购买 nike

为什么 FragmentTwo在以下情况下从后台消失:

  • 我的应用有一个 Fragment称为 FragmentOneActivity .
  • FragmentOne持有Button .单击时,它会启动 FragmentTwo , 它被添加到 Fragment后栈。
  • FragmentTwo有一个 Button , 单击后会向 ActionBar 添加两个选项卡链接到两个Fragments , FragmentThreeFragmentFour . FragmentThree是可见的。
  • 如果我现在点击后退按钮,我希望看到 FragmentTwo .相反,我看到了 FragmentOne . FragmentTwo哪里去了走?

在我覆盖 onKeyDown() 之前并开始为 Fragments 实现我自己的后台堆栈我想问一下我是否缺少明显的东西?请注意,测试时不会发生配置更改。

enter link description here

详细信息:

FragmentOne 的按钮点击处理程序包含:

    FragmentTransaction ft = getFragmentManager().beginTransaction();
FragmentTwo fragment = new FragmentTwo();
ft.addToBackStack(null);
ft.replace(android.R.id.content, fragment).commit();

FragmentTwo 按钮点击在 Activity 中处理:

    getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
FragmentFour fragmentThree = new FragmentThree();
FragmentFive fragmentFive = new FragmentFive();

ActionBar.Tab tab = getActionBar().newTab().setText("Frag 3").setTabListener(new CustomTabListener<FragmentThree>(fragmentThree));
getActionBar().addTab(tab);
tab = getActionBar().newTab().setText("Frag 4").setTabListener(new CustomTabListener<FragmentFour>(fragmentFour));
getActionBar().addTab(tab);

选项卡监听器所在的位置:

public static class CustomTabListener<T extends Fragment> implements TabListener {
Fragment fragment;

public CustomTabListener(Fragment fragment) {
this.fragment = fragment;
}

public void onTabSelected(Tab tab, FragmentTransaction ft) {
ft.replace(android.R.id.content, fragment);
}

public void onTabUnselected(Tab tab, FragmentTransaction ft) {
ft.remove(fragment);
}

public void onTabReselected(Tab tab, FragmentTransaction ft) {

}
}

我如果添加更多FragmentsFragmentThree之前退栈显示,它始终且仅是 Fragment紧接在 FragmentThree 之前那已经消失了。

当我通过按返回键离开选项卡式用户 View 并返回到 FragmentOne 时,选项卡仍在显示。我知道我需要重置 ActionBarNAVIGATION_MODE_STANDARD , 但不清楚为什么 FragmentOne显示而不是 FragmentTwo .

最佳答案

我认为问题是如果你建立你的标签

public void onTabSelected(Tab tab, FragmentTransaction ft) {
ft.replace(android.R.id.content, fragment);
}

被调用并且之前的 fragment 没有被添加到后台

你试过打电话吗

ft.addToBackStack(null);

在 Fragment Two 按钮处理代码中。

但是无论如何你都需要实现 onBackPressed() 来摆脱制表符。我想我会使用标签进行新 Activity 。

关于android - fragment 从后台消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14209617/

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