这是从backstack得到的片段,再次拨打onCreateView() [英] The fragment which is got from backstack, call onCreateView() again

查看:207
本文介绍了这是从backstack得到的片段,再次拨打onCreateView()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

请帮我解决我的问题。

MainActivity 用的FrameLayout。我想更换一些碎片进入的FrameLayout。现在我encounering一个问题,它是:

I have MainActivity with a framelayout. I want to replace some fragments into the framelayout. Now I am encounering an issues, it's:

1)我创建并把片段A至的FrameLayout。片段一个名为 onCreateView ...等。

1) I created and put fragment A to framelayout. Fragment A called onCreateView...etc.

2)然后我创建并把B片段布局......片段A被提上backstack并呼吁的onPause()(不叫 onDeattach()的onDestroy ...)

2) Then I created and put fragment B to layout... Fragment A was put on backstack and it called onPause() (not called onDeattach(), onDestroy...)

3)I pressed后退按钮。片段A从backstack了,但它叫 onCreateView()一次。这个动作让我的应用程序有一些其他的问题。

3) I pressed back button. Fragment A was got from backstack, but it called onCreateView() again. This action make my app has some another issues.

所以我的问题是如何在碎片中的存储backstack,它不重建视图。

So my question is how to store fragment A in backstack and it don't recreate view.

这是被用来改变片段的方法:

This's the method that was used to change fragment:

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;
    }
}

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

Thank and sorry for my bad question, my english is not well.

推荐答案

检查出我的整个后在这里<一个href=\"http://stackoverflow.com/questions/18120510/dynamically-changing-the-fragments-inside-a-fragment-tab-host/19859871#19859871\">Dynamically改变片段片段选项卡里面的主机?

check out my complete post over here Dynamically changing the fragments inside a fragment tab host?

至于你重装(我假设),那么你可以做一些下述事情的问题:

As far your problem of reloading ( I assume ) you can do some thing like undermentioned:

(1)启动一个布尔值,说

(1) Initiate a Boolean value say

boolean android_hacker = false;

(2)现在说ü需要获取数据,并使用列表视图的一些看法。现在,在这个阶段集中android_hacker = TRUE;你已经获取的所有数据后。

(2) Now say U need to fetch data and create some view using list view. Now at this stage set "android_hacker = true;" after you have fetched all data.

(3)现在U时再回来相同的片段说:碎裂,然后点击OnCreateView检查值提到的。

(3) Now when U again come back to same fragment say "FragmentA" then check value on OnCreateView as mentioned ..

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

就是这样。希望它可以帮助一些一

That's it. Hope it helps some one

这篇关于这是从backstack得到的片段,再次拨打onCreateView()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆