我有一个包含 Buttons
的 FragmentActivity
和三个 Fragment
类。如果单击按钮 1,我想显示 FragmentOne
并隐藏 FragmentTwo
、FragmentThree
。如果单击 Button2
,我想显示 FragmentTwo
并隐藏 FragmentOne
、FragmentThree
,反之亦然。我的代码不起作用。
private void fManager() {
FragmentManager manager = getSupportFragmentManager();
f1 = manager.findFragmentById(R.id.first);
f2 = manager.findFragmentById(R.id.second);
f2 = manager.findFragmentById(R.id.third);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button1:
if (b1.isPressed()) {
FragmentTransaction transaction = getSupportFragmentManager()
.beginTransaction();
transaction.hide(f2);
transaction.hide(f3);
transaction.show(f1);
transaction.commit();
}
break;
case R.id.button2:
if (b2.isPressed()) {
FragmentTransaction transaction = getSupportFragmentManager()
.beginTransaction();
transaction.hide(f1);
transaction.hide(f3);
transaction.show(f2);
transaction.commit();
}
break;
case R.id.button3:
if (b3.isPressed()) {
FragmentTransaction transaction = getSupportFragmentManager()
.beginTransaction();
transaction.hide(f1);
transaction.hide(f2);
transaction.show(f3);
transaction.commit();
}
break;
}
}
最佳答案
您需要提交
您的交易:
transaction.commit();
另请注意,show()
和 hide()
仅适用于添加到容器中的 fragment (例如 FrameLayout
),因此如果你直接在 XML 中定义了你的 fragment ,那么你可能无法按照你尝试的方式做到这一点。此外,如果您使用容器,只需对它们执行常规 setVisibility()
而不是在那里处理 fragment - 效果将完全相同。
关于android - 在 Android 中隐藏/显示 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15865584/