【发布时间】:2012-12-30 03:11:47
【问题描述】:
我正在开发包含 2 个片段的应用程序,我想根据需要显示隐藏。以下代码有我的问题的简单示例。 这个简单的 Fragmentactivity 包含 1 个按钮和一个 listfragment。
这个简单的例子完美无缺。但我对显示隐藏片段不满意。如果你删除 layout.setVisibility(View.GONE);从代码然后 ft.hide(f);不会隐藏片段。事实上,我们不是在隐藏片段,而是在隐藏容器。
我的问题是,这是一种显示隐藏片段的方式吗?如果没有,请用经过测试的示例解释如何隐藏和显示片段,因为很多人都面临这个问题。
public class MainActivity extends FragmentActivity implements OnClickListener {
Fragment1 f;
Button b;
LinearLayout layout;
Fragment myf;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b = (Button) findViewById(R.id.button1);
layout = (LinearLayout) findViewById(R.id.ll);
f = new Fragment1();
}
@Override
public void onClick(View v) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out);
if (f.isHidden()) {
ft.show(f);
layout.setVisibility(View.VISIBLE);
b.setText("Hide");
} else {
ft.hide(f);
b.setText("Show");
layout.setVisibility(View.GONE);
}
ft.commit();
// TODO Auto-generated method stub
}
【问题讨论】:
-
为什么需要设置容器的可见性?它应该可以在不设置可见性的情况下工作。
-
确切地说,它应该在没有容器可见性的情况下工作,但它不起作用。请与我分享简单的工作示例。然后我就会知道我在哪里失踪了。
-
我的猜测是您每次都试图显示/隐藏不同的片段实例。当您添加片段时(顺便说一下,我没有看到这段代码)将其添加到标签中,然后通过该标签检索它(而不是尝试存储对它的引用)。这可能就是你所缺少的。
标签: android android-fragments show-hide