把片段阵线(无分段娱乐) [英] Bring Fragment to Front (No fragment recreation)

查看:112
本文介绍了把片段阵线(无分段娱乐)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有三个片段F1 F2 F3 F4都是从侧边栏进行访问。

I have three fragments F1 F2 F3 F4 all are accessible from sidebar.

所有四个可以被称为在任何时间,以任何顺序,

all four can be called at any time and in any order,

现在我想,如果,F1已经被点击(创建),然后再也没有创造F1,但只能用碎片经理带回片段F1到前面。相同的所有其他片段

Now I want if, F1 is already clicked(created) then never again create F1, but only bring back fragment F1 to front using fragment manager. Same for all other fragment

到目前为止的我想这对每个片段在我的容器(片断活动)

So far i tried this for every fragment in my container (FRAGMENT ACTIVITY)

if (fragmentManager.findFragmentByTag("apps")==null) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);

Fragment newFragment = new CategoriesFragment();
transaction.replace(R.id.content_frame, newFragment, "apps");
transaction.addToBackStack("apps");
transaction.commit();   
} else{

}

如果部分可以确保我没有片段时重新创建(如果它已经创建)了,但我应该怎么写其他部分,使已经创建的片段可以在视图层次被带到前面

If part ensures me NO fragment is recreated (If its created already) again, but what should i write in else part so that already created fragment can be brought to front in View Hierarchy

请帮助,我会停留在这2天。

Please Help, i'm stuck at this for 2 days.

推荐答案

我会把这个code在活动课,必须具有的FrameLayout id为 R.id.fragment_container

I would put this code in activity class, that must have FrameLayout with id R.id.fragment_container.

private Fragment1 F1;
private Fragment2 F2;
private Fragment3 F3;
private Fragment4 F4;       

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    F1 = new Fragment1();
    getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, F1).commit();
    F2 = new Fragment2();
    getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, F2).commit();
    F3 = new Fragment3();
    getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, F3).commit();
    F4 = new Fragment4();
    getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, F4).commit();

    //if needed show F1
    getSupportFragmentManager().beginTransaction().show(F1).commit();

}

和添加此的按钮点击:

public void onBtnClick(View view){
    if(mShowF1){
        getSupportFragmentManager().beginTransaction().show(F1).commit();
        getSupportFragmentManager().beginTransaction().hide(F2).commit();
        getSupportFragmentManager().beginTransaction().hide(F3).commit();
        getSupportFragmentManager().beginTransaction().hide(F4).commit();
    }
    //...
}

在按钮点击()你可以告诉,你想要的片段和隐藏等。

On button click(s) you can show, that fragment that you want and hide others.

这篇关于把片段阵线(无分段娱乐)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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