在Fragment中的Android工具栏中添加图标

5

根据我的要求,我实现了一个工具栏并将其替换为操作栏。现在我想在片段中的工具栏中添加图标。我尝试使用onCreateOptionMenu()并将我的菜单XML传递给它。但是它不起作用。我还尝试了其他一些方法和搜索,但到目前为止什么都没用。有人对此有任何想法吗?这是我的片段代码

public class Fragment_FavouriteLocations extends Fragment {
    public Fragment_FavouriteLocations() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment

        return inflater.inflate(R.layout.fragment_main_fav_location_row_item, container, false);


    }

    @Override
    public void onCreateOptionsMenu(
            Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.fav_location_menu, menu);
        super.onCreateOptionsMenu(menu, inflater);

    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.edit_button) {
            Toast.makeText(getActivity(), "", Toast.LENGTH_LONG).show();
            return true;
        }
//
//      if(id == R.id.action_search){
//          Toast.makeText(getApplicationContext(), "Search action is selected!", Toast.LENGTH_SHORT).show();
//          return true;
//      }

        return super.onOptionsItemSelected(item);
    }

}

这是我的菜单xml。
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:mayApp="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/edit_button"
        mayApp:icon="@android:drawable/ic_menu_edit"
        android:title="Edit"
        mayApp:showAsAction="always" />
</menu>

感谢您的提前帮助。

你设置了 setSupportActionBar(mToolbar) 吗? - rahul.ramanujam
尝试过了,但无法实现。getActivity().setSupportedActionBar(mToolbar) 不起作用。 - Nouman Ghaffar
你需要在你的活动中完成它,你能否发布你的活动代码? - rahul.ramanujam
我想在我的片段中使用它。好的。如果我在我的活动中设置它,我能否在我的片段中显示或隐藏图标? - Nouman Ghaffar
2个回答

10
在您的片段中,在onCreateView()方法中,您需要添加:
setHasOptionsMenu(true);

否则,onCreateOptionsMenu() 将永远不会被调用。

2
然后如何在用户离开此片段时隐藏该片段的菜单? - Zeeshan Ahmed

0

你可能需要使用invalidateOptionsMenu()来告诉片段重新绘制菜单操作,就像这样...

        @Override
        public void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            getActivity().invalidateOptionsMenu();
            setHasOptionsMenu(true);
        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接