ActionBar 中的按钮设置可见性?
Button in ActionBar setting visibility?
我有 3 个 Fragments
,在 Fragment3
中,我想在我的 ActionBar
中显示一个图标,这很好用,但是当我返回到 Fragment1 和 Fragment2 等其他片段时图标保持 visible(true)
我尝试在 Fragment 的 onPause
中添加 item.setVisible(false)
,但不起作用,图标仍然显示在其他 Fragments
中
我该如何解决?
XML
<item
android:id="@+id/action_chat"
android:icon="@drawable/batalha_icon_chat"
android:title="Chat"
app:showAsAction="ifRoom"
android:visible="true"
/>
片段
public class Fragment3 extends Fragment implements View.OnClickListener {
private Menu mMenu;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.battle_chat, menu);
mMenu = menu;
MenuItem mi = mMenu.findItem(R.id.action_chat);
if(this.isVisible()){
Log.i("VISIBLE->", "true");
mi.setVisible(true);
}else{
Log.i("VISIBLE->", "false");
mi.setVisible(false);
}
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_chat:
Fragment frag = new HelloBubblesActivity();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.fl, frag,"HelloBubblesActivity");
ft.commit();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void onPause() {
super.onPause();
//API 9
getActivity().supportInvalidateOptionsMenu();
}
您需要致电:invalidateOptionsMenu();
这将调用 onCreateOptionsMenu()
.
我有 3 个 Fragments
,在 Fragment3
中,我想在我的 ActionBar
中显示一个图标,这很好用,但是当我返回到 Fragment1 和 Fragment2 等其他片段时图标保持 visible(true)
我尝试在 Fragment 的 onPause
中添加 item.setVisible(false)
,但不起作用,图标仍然显示在其他 Fragments
我该如何解决?
XML
<item
android:id="@+id/action_chat"
android:icon="@drawable/batalha_icon_chat"
android:title="Chat"
app:showAsAction="ifRoom"
android:visible="true"
/>
片段
public class Fragment3 extends Fragment implements View.OnClickListener {
private Menu mMenu;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.battle_chat, menu);
mMenu = menu;
MenuItem mi = mMenu.findItem(R.id.action_chat);
if(this.isVisible()){
Log.i("VISIBLE->", "true");
mi.setVisible(true);
}else{
Log.i("VISIBLE->", "false");
mi.setVisible(false);
}
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_chat:
Fragment frag = new HelloBubblesActivity();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.fl, frag,"HelloBubblesActivity");
ft.commit();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void onPause() {
super.onPause();
//API 9
getActivity().supportInvalidateOptionsMenu();
}
您需要致电:invalidateOptionsMenu();
这将调用 onCreateOptionsMenu()
.