gpt4 book ai didi

android - 将 Fragment 放在前面(无 Fragment Recreation)

转载 作者:IT老高 更新时间:2023-10-28 23:06:27 24 4
gpt4 key购买 nike

我有三个 fragment F1 F2 F3 F4 都可以从侧边栏访问。

所有四个都可以在任何时间以任何顺序调用,

现在我想,如果 F1 已经被点击(创建)然后不再创建 F1,而只使用 fragment 管理器将 fragment F1 带回到前面。所有其他 fragment 都相同

到目前为止,我对容器中的每个 fragment 都进行了尝试( 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 部分确保我没有重新创建 fragment (如果它已经创建),但是我应该在 else 部分中写什么以便 已经创建的 fragment 可以在 View 层次结构中显示在前面

请帮忙,我在这个问题上卡了 2 天。

最佳答案

我会将此代码放在 Activity 类中,该类必须具有 FrameLayout 和 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();
}
//...
}

在按钮单击时,您可以显示您想要的 fragment 并隐藏其他 fragment 。

注意 (@developer1011):用于在 Activity 保存状态调用 commitAllowingStateLoss() 之后使用。小心使用,因为 fragment 不会随着 Activity 恢复而恢复。

注意:MainActivity 应该为每个 Fragment 实现 OnFragmentInteractionListener。

public class MainActivity extends FragmentActivity implements Fragment1.OnFragmentInteractionListener, Fragment2.OnFragmentInteractionListener, Fragment3.OnFragmentInteractionListener, Fragment4.OnFragmentInteractionListener {//..

@Override
public void onFragmentInteraction(Uri uri) {
//
}
}

关于android - 将 Fragment 放在前面(无 Fragment Recreation),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20737550/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com