从backstack获取的片段再次调用onCreateView()

时间:2013-12-10 07:27:18

标签: android fragment back-stack

请帮我解决我的问题。

我有MainActivity的framelayout。我想将一些片段替换为framelayout。现在我正在鼓励一个问题,那就是:

1)我创建并将片段A放到framelayout。片段A称为onCreateView ......等等。

2)然后我创建并将片段B放到布局中......片段A放在后台上,它叫onPause()(不叫onDeattach()onDestroy ...)< / p>

3)我按下了按钮。片段A是从后台堆栈获得的,但它再次调用了onCreateView()。这个动作使我的应用程序有另外一些问题。

所以我的问题是如何在反叠堆中存储片段A,它不会重新创建视图。

这是用于更改片段的方法:

public static void setContent(FragmentManager managerFragment, Fragment detailFragment) {
    if (managerFragment != null) {
        if(lastFragment==null && detailFragment instanceof HomeVer3Fragment ||
                (lastFragment!=null && detailFragment instanceof HomeVer3Fragment && lastFragment instanceof HomeVer3Fragment)){
            return;
        }
        String tag=detailFragment.getClass().getName();
        managerFragment.popBackStackImmediate(tag, FragmentManager.POP_BACK_STACK_INCLUSIVE);
        FragmentTransaction ft = managerFragment.beginTransaction();
        ft.replace(R.id.content_frame, detailFragment);
        ft.addToBackStack(tag);
        ft.commit();
        lastFragment = detailFragment;
    }
}

感谢和抱歉我的问题,我的英语不太好。

1 个答案:

答案 0 :(得分:2)

在此处查看我的完整帖子Dynamically changing the fragments inside a fragment tab host?

到目前为止你的重装问题(我假设)你可以做一些像下面提到的那样的事情:

(1)启动布尔值,说

boolean android_hacker = false;

(2)现在说你需要使用列表视图获取数据并创建一些视图。现在在这个阶段设置“android_hacker = true;”在您获取所有数据之后。

(3)现在,当U再次回到相同的片段时说“FragmentA”,然后检查OnCreateView上的值,如上所述..

if(android_hacker != true){
        new GoAsyncTask().execute();
        }else{
// Perform stuff U need
}

就是这样。希望它有所帮助