android - 后退导航不恢复最后一个 fragment

标签 android android-fragments navigationbar fragment-backstack

返回导航 有问题,因为它不会恢复最后一个 fragment 。所有 Activity 都是 AppCompatActivity 使用 Android Studio 的 navigation_drawer(ActivityA) 和 scroll_activity(ActivityB) 模板

  • ActivityA 显示 fragment_1(确定)
  • fragment_1 替换为 fragment_2(确定)
  • 通过单击 fragment_2 中的按钮启动 ActivityB(确定)
    • 如果我点击系统的后退按钮,我可以看到ActivityB(GOOD)
    • 如果我点击 ActivityBback 导航,它会显示 fragment_1 而不是 fragment_2 (不好)

我试过的是:

  1. 创建一个静态变量来控制显示哪个 fragment ,并尝试在 onResume() 处再次渲染,但它不起作用。
  2. 已关注此 link但也不起作用。

有什么帮助吗?谢谢

最佳答案

嗨,Nguyen,我创建了相同的场景,但从 activityB 返回后,fragment_2 位于顶部

这是我的代码 `公共(public)类 FirstActivity 扩展了 ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_first);
    if (savedInstanceState == null) {
        getSupportFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment1()).commit();
    }
}

/**
 * A placeholder fragment containing a simple view.
 */
public static class PlaceholderFragment1 extends Fragment {

    public PlaceholderFragment1() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_first, container, false);
        Button button = (Button) rootView.findViewById(R.id.btn);
        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                getActivity().getSupportFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment2()).commit();
            }
        });
        return rootView;
    }
}

public static class PlaceholderFragment2 extends Fragment {

    public PlaceholderFragment2() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_second, container, false);
        Button button = (Button) rootView.findViewById(R.id.btn);
        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getActivity(), Secondctivity.class);
                startActivity(intent);
            }
        });
        return rootView;
    }
}

} `

这是我的 list 文件

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".FirstActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name=".Secondctivity"
        android:label="@string/title_activity_secondctivity" >
    </activity>
</application>

关于android - 后退导航不恢复最后一个 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34921737/

相关文章:

android - React Native 应用程序 - Google 登录

java - android Intent 未激活

android - ViewPager - onCreateView 并不总是被调用

android - 以编程方式截取整个屏幕的屏幕截图

javascript - 像 YouTube 这样的网站在不触发 popstate 或 beforeunload 的情况下使用什么来更改 URL?

android - 寻找以单一 Activity 应用程序方法在 Android 中实现 SearchView 的想法

android - 文字说明未在 Facebook 上分享

安卓错误 : "commit already called" when remove a fragment

用于 Wordpress Customizr 主题导航悬停动画的 CSS

html - 在html中隐藏网页内容和侧边栏内容的导航栏