Android - 在恢复时显示Fragment

3
我目前在我的活动中有一个导航抽屉,其中包含一些片段(主页、帮助、关于)。启动时会打开主页。我遇到的问题是,当我转到另一个片段,例如帮助,然后将手机休眠并随后重新打开手机时,它总是返回到主页而不是帮助。
我对生命周期还不太了解,但希望能得到如何从不同片段中恢复的反馈。
编辑:提供相关代码 更新:意识到这是因为我在恢复时重新初始化了视图。
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    initializeUI();
}


private void initializeUI() {


    fragAbout = new About();
    fragHelp = new Help();
    fragHome = new MyViewPager();


    // Adding fragments to activity
    FragmentManager fragmentManager = getSupportFragmentManager();

    FragmentTransaction transaction = fragmentManager.beginTransaction();
    transaction.add(R.id.main_activity_fraglayout, fragHome);

    transaction.commit();

    ...


}

private void addDrawerItems() {

    ...

    DrawerItemAdapter drawerAdapter = new DrawerItemAdapter(this, R.layout.nav_list_row, drawerItems);
    mDrawerList.setAdapter(drawerAdapter);

    mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            switch (position) {
                case 0:
                    ...
                    newFragOnClick(fragHome, "Home");
                    break;
                case 1:
                    ...
                    newFragOnClick(fragSettings, "Help");
                    break;
                case 2:
                    ...
                    newFragOnClick(fragAbout, "About");
                    break;
                default:
                    break;

            }
        }
    });
}

private void newFragOnClick(Fragment frag, String actionBarTitle){

    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction transaction = fragmentManager.beginTransaction();

    transaction.replace(R.id.main_activity_fraglayout, frag);
    transaction.commit();
}

请上传您的活动的完整代码。 - Mohammed Atif
1
你可以从托管活动中处理此导航,将所需的片段替换为托管活动的onResume()方法中。 - Muhammad Farhan Habib
没错,Farhan。看起来可以了。谢谢! - WonderfulWonder
1个回答

1
使用sharedpreferences来保存当前选项卡的位置,在onResume()中使用它来移动到保存的位置。

巧合的是,我在我的应用程序中的其他地方确实有一个带选项卡的视图分页器,这也与我需要的其他内容相关。谢谢!但是,抽屉实际上与带选项卡的视图分页器不同。 - WonderfulWonder
实际上这个逻辑仍然可以使用。太棒了。谢谢! - WonderfulWonder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接