gpt4 book ai didi

android - 隐藏/显示 fragmentTransaction 不起作用的 fragment

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:26:21 25 4
gpt4 key购买 nike

我希望我的 Activity 包含 2 个 fragment ,并使用操作栏上的按钮在它们之间切换。所以这是我的 Activity 布局:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />

</LinearLayout>

在 Activity 的 onCreate() 中,我将两个 fragment 添加到容器中...因为我需要 firstFragment 在 secondFragment 之前执行,所以我首先添加它,而不是隐藏 secondFragment,这样用户将以正确的顺序看到 fragment :

if (findViewById(R.id.fragment_container) != null) {
if (savedInstanceState != null) {
return;
}
FirstFragment firstFragment = new FirstFragment();
SecondFragment secondFragment = new SecondFragment();
firstFragment.setArguments(getIntent().getExtras());
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, firstFragment, "FirstFragment")
.add(R.id.fragment_container, secondFragment, "SecondFragment")
.hide(secondFragment)
.commit();
}

当用户触摸操作栏上的按钮时,将执行以下方法并且应该隐藏一个 fragment 并显示另一个 fragment ,但没有任何反应......

public void changeFragment(int id){
Fragment secondFragment = new SecondFragment();
Fragment firstFragment = new FirstFragment();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction()
.setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out);
switch (id){
case 1:
//show 2nd
transaction.hide(firstFragment)
.show(secondFragment)
.commit();
break;
case 2:
//show 1st
transaction.hide(secondFragment)
.show(firstFragment)
.commit();
break;
default:
//do nothing
}
}

关于我在这里遗漏了什么的任何提示?提前致谢

最佳答案

实际上,您的问题看起来微不足道。每次您通过以下方式创建新 fragment 时:

public void changeFragment(int id){
Fragment secondFragment = new SecondFragment();
Fragment firstFragment = new FirstFragment();

我认为代码应该是这样的,因为你只想隐藏一个并显示另一个,而不是添加两个全新的 fragment :

public void changeFragment(boolean id){
final Fragment secondFragment = getFragmentManager().findFragmentByTag(FIRST_FRAGMENT_TAG);
final Fragment firstFragment = getFragmentManager().findFragmentByTag(SECOND_FRAGMENT_TAG);

关于android - 隐藏/显示 fragmentTransaction 不起作用的 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24089129/

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