【发布时间】:2015-01-29 07:35:23
【问题描述】:
我创建了片段并根据菜单项的点击事件安排其可见性。当我第一次单击时,它可以正常工作,但再次单击片段可见性不会隐藏。图片说明;当我单击设置显示灰色片段时,再次单击时我想隐藏灰色片段,但它没有做这些事情。
这是我的代码;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
MenuItem item = menu.findItem(R.id.action_settings);
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
if (findViewById(R.id.frameLayout) != null)
{
FragmentTest fragmenttest = new FragmentTest();
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
if (fragmenttest.isVisible()) {
ft.hide(fragmenttest);
} else {
if (fragmenttest.isAdded()) {
} else {
ft.add(R.id.frameLayout, fragmenttest, "Hello Fragment");
}
ft.show(fragmenttest);
}
ft.commit();
}
return false;
}
});
return true;
}
【问题讨论】:
-
我建议不要编写这个复杂的逻辑,而是编写简单的计数器逻辑,取一个计数器变量,用 0 取模数为 2 的计数器变量,即 if(count%2==0) { 可见逻辑} else { 不可见的逻辑 }
-
覆盖
onOptionsItemSelecteddeveloper.android.com/reference/android/app/… 怎么样? -
@它又做了一次。我的问题是关于在 if 语句中声明 Fragment 的原因。在 onoptionsitemselected 中移动代码后,它再次起作用:) 谢谢。我将使用 onoptionsitemselected。
标签: android android-fragments android-studio onclick