无法使 MenuItem 再次可见
Can't make MenuItem visible again
我有一个 MenuItem
,我想让它在只选择 FragmentTabHost
的 ChatListFragment
时可见:
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item
android:id="@+id/action_start_chat"
android:icon="@drawable/ic_add_black_48dp"
android:title="@string/action_bar_add_text"
app:showAsAction="always"
android:visible="true"/>
</menu>
所以我让它在 MainActivity 中不可见:
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
this.menu = menu;
addChatItem = menu.findItem(R.id.action_start_chat);
addChatItem.setVisible(false);
return super.onCreateOptionsMenu(menu);
}
它在 LoginFragment
中是不可见的,但我无法使用 MainActivity
的 public 方法使其从 ChatListFragment
再次可见:
主要活动:
public void setAddChatVisibility(boolean visible) {
addChatItem.setVisible(visible);
invalidateOptionsMenu();
supportInvalidateOptionsMenu();
}
ChatListFragment:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_conversation, container, false);
mainActivity = (MainActivity) getActivity();
mainActivity.setAddChatVisibility(true);
return view;
}
我该怎么做?提前致谢。
在 invalidateOptionsMenu 调用方法 onCreateOptionsMenu(Menu menu) 之后 activity 再次调用导致可见值设置为 false。
您可以在片段中使用 onCreateOptionMenu
onCreateOptionsMenu inside Fragments
抱歉我的英语不好
我有一个 MenuItem
,我想让它在只选择 FragmentTabHost
的 ChatListFragment
时可见:
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item
android:id="@+id/action_start_chat"
android:icon="@drawable/ic_add_black_48dp"
android:title="@string/action_bar_add_text"
app:showAsAction="always"
android:visible="true"/>
</menu>
所以我让它在 MainActivity 中不可见:
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
this.menu = menu;
addChatItem = menu.findItem(R.id.action_start_chat);
addChatItem.setVisible(false);
return super.onCreateOptionsMenu(menu);
}
它在 LoginFragment
中是不可见的,但我无法使用 MainActivity
的 public 方法使其从 ChatListFragment
再次可见:
主要活动:
public void setAddChatVisibility(boolean visible) {
addChatItem.setVisible(visible);
invalidateOptionsMenu();
supportInvalidateOptionsMenu();
}
ChatListFragment:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_conversation, container, false);
mainActivity = (MainActivity) getActivity();
mainActivity.setAddChatVisibility(true);
return view;
}
我该怎么做?提前致谢。
在 invalidateOptionsMenu 调用方法 onCreateOptionsMenu(Menu menu) 之后 activity 再次调用导致可见值设置为 false。
您可以在片段中使用 onCreateOptionMenu onCreateOptionsMenu inside Fragments
抱歉我的英语不好