gpt4 book ai didi

java - 如何在单击按钮时添加/删除 fragment ?

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

目前我有一个“RELATIVE_LAYOUT”容器,我用它来添加我的 fragment 。我在按钮上使用 OnClickListener 将 fragment XML 布局加载到 RelativeLayout 容器中。

我想要实现的是,当我按下按钮一次时, fragment 应该加载......当我再次按下它时, fragment 应该被删除。我已经尝试使用整数来确定 fragment 是否已加载,但失败了。任何帮助表示感谢...

代码:

public class MainActivity extends Activity {
Button B1,B2;
int boolb1=0, boolb2=0;

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

B1 = (Button)findViewById(R.id.btn1);
B2 = (Button)findViewById(R.id.btn2);

B1.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
FragmentOne f1 = new FragmentOne();

if(boolb1==0)
{ft.add(R.id.frg1, f1);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
boolb1=1;}
else
{ft.remove(f1);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
boolb1=0;}
//ft.addToBackStack("f1");
ft.commit();
}
});

B2.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
FragmentTwo f2 = new FragmentTwo();

if(boolb2==0) {
ft.add(R.id.frg2, f2);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
boolb2=1;
} else {
ft.remove(f2);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
boolb2=0;
}

//ft.addToBackStack("f2");
ft.commit();
}
});
}

最佳答案

你的问题是你每次点击Button时都创建了一个 Fragment。您需要获取对当前添加的 Fragment 的引用,然后删除那个。

此外,您不再需要使用标志。添加 fragment 时,您可以标记它。删除 Fragment 后,您可以使用用于添加 Fragment 的标记来获取对当前添加的 Fragment 的引用。

下面是一个你应该如何做的例子:

private Button B1;

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

B1 = (Button)findViewById(R.id.btn1);

B1.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
FragmentOne f = (FragmentOne) fm.findFragmentByTag("tag");

if(f == null) { // not added
f = new FragmentOne();
ft.add(R.id.frg1, f, "tag");
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);

} else { // already added

ft.remove(f);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
}

ft.commit();
}
});

// and so on ...
}

关于java - 如何在单击按钮时添加/删除 fragment ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24517494/

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