【问题标题】:Can't make MenuItem visible again无法使 MenuItem 再次可见
【发布时间】:2015-11-03 21:36:46
【问题描述】:

我有一个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 的公共方法从ChatListFragment 再次看到它:

主活动:

public void setAddChatVisibility(boolean visible) {
    addChatItem.setVisible(visible);
    invalidateOptionsMenu();
    supportInvalidateOptionsMenu();
}

聊天列表片段:

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;
}

我该怎么做?提前致谢。

【问题讨论】:

    标签: android menu menuitem


    【解决方案1】:

    invalidateOptionsMenu 在活动中调用方法 onCreateOptionsMenu(Menu menu) 后再次调用导致可见值设置为 false。

    你可以在片段中使用 onCreateOptionMenu onCreateOptionsMenu inside Fragments

    对不起我的英语不好

    【讨论】:

    • 也许你可以稍微改进一下你的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    • 2012-07-19
    • 2012-12-10
    • 1970-01-01
    相关资源
    最近更新 更多