【问题标题】:Android toolbar not updating until tapping on overflow menu icon在点击溢出菜单图标之前,Android 工具栏不会更新
【发布时间】:2015-08-17 09:45:03
【问题描述】:

我有 MainActivity 扩展 android.support.v7.app.ActionBarActivity 和带有搜索、过滤器图标和溢出菜单中的其他选项的工具栏,当我加载某个片段时,我希望搜索图标消失并显示过滤器图标。在我下面的代码中,我试图隐藏搜索图标并显示过滤器图标,但工具栏只有在我点击溢出菜单图标时才会更新。我很困惑我哪里出错了......任何建议都非常感谢,在此先感谢。

MY_FRAGMENT.Java

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    position = getArguments().getInt(ARG_POSITION);
    return rootView;
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
    Log.v("oncreate", "");
}

@Override
public void onPrepareOptionsMenu(Menu menu) {
    Log.v("onPrepareOptionsMenu", "");
    AppCompatActivity activity = (AppCompatActivity) getActivity();
    menu.findItem(R.id.action_filter).setVisible(true).setEnabled(true);
    menu.findItem(R.id.action_notification).setVisible(false).setEnabled(false);
    activity.invalidateOptionsMenu(); 
    menu.findItem(R.id.action_notifications).setVisible(false).setEnabled(false);
    return;
}

【问题讨论】:

    标签: android toolbar


    【解决方案1】:

    改变

    activity.invalidateOptionsMenu();
    activity.onCreateOptionsMenu(menu);
    

    activity.onCreateOptionsMenu(menu);
    activity.invalidateOptionsMenu();
    

    希望对你有帮助!

    【讨论】:

    • 我们应该这样称呼它吗? activity.onCreateOptionsMenu(menu);
    • 感谢@Boss 的建议,activity.onCreateOptionsMenu(menu);实际上没有必要调用,根据文档 invalidateOptionsMenu() 通常可以解决问题,但由于某种原因它对我不起作用...请检查更新的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-28
    • 2020-09-30
    相关资源
    最近更新 更多