Fragment中添加toolbar-menu

2024-05-02 23:18
文章标签 fragment menu toolbar

本文主要是介绍Fragment中添加toolbar-menu,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

应用中常常会遇到这种需求:

Activity中有不同的Fragment,如MainActivity,二不同的Fragment要求有不同的toolbar,menu。

那么如何自定义Fragment的toolbar呢?

1. 在fragment的xml中添加toolbar;

2. 在fragment的onCreate方法中添加setHasOptionsMenu(true);

@Overridepublic void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setHasOptionsMenu(true);//加上这句话,menu才会显示出来}

3. 初始化toolbar.

mToolbarContact = view.findViewById(R.id.tool_bar_contact);
((AppCompatActivity) getActivity()).setSupportActionBar(mToolbarContact);

4.重写onCreateOptionsMenu:

 @Overridepublic void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {//menu.clear();//这句话没用,不必加inflater.inflate(R.menu.menu_contacts, menu);super.onCreateOptionsMenu(menu, inflater);}

5. 重写onOptionsItemSelected:

@Overridepublic boolean onOptionsItemSelected(MenuItem item) {int id = item.getItemId();if (id == R.id.menu_add_contact) {T.showToastBro(getActivity(), item.getTitle().toString());}if (id == R.id.menu_nearby_businesses) {T.showToastBro(getActivity(), item.getTitle().toString());}return super.onOptionsItemSelected(item);}

然后发现fragment的menu和activity的menu重叠。

  • 问题出在第3步,要改为:

mToolbarContact = view.findViewById(R.id.tool_bar_contact);
mToolbarContact.inflateMenu(R.menu.menu_contacts);
  • 然后发现menu的点击事件不相应。即使已经加了setHasOptionsMenu(true);

第4、5都不用重写,要toolbar代码实现点击事件

mToolbarContact = view.findViewById(R.id.tool_bar_contact);
mToolbarContact.inflateMenu(R.menu.menu_contacts);
mToolbarContact.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {@Overridepublic boolean onMenuItemClick(MenuItem item) {int id = item.getItemId();if (id == R.id.menu_add_contact) {T.showToastBro(getActivity(), item.getTitle().toString());}if (id == R.id.menu_nearby_businesses) {T.showToastBro(getActivity(), item.getTitle().toString());}return true;}});

解决!

这篇关于Fragment中添加toolbar-menu的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/955348

相关文章

Android ToolBar+DrawerLayout的实现

实现思路: 1.关联相应的依赖包 compile ‘com.android.support:appcompat-v7:25.3.1’ 2.主布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"

ViewPager+fragment实现切换页面(一)

如今的很多应用中都是下面有一排按钮,点击可以切换页面,滑动也可以切换页面。下面就来简单的实现这个功能。 思路 首先肯定是会用到viewpager这个控件,为了能够向下兼容,最好用v4包下的viewpager,Activity要继承FragmentActivity 其次用一个集合来存储所有的fragment页面在设置viewpager的适配器时,把存储fragment页面的list集合传入ada

安卓中的fragment与viewPager的使用问题的解决

最近使用viewPager,结合fragment使用,发现fragment的周期将不符合他的原有的周期流程,多个fragment将会产生错位问题。       通过研究相关代码,发现fragment的切换实际调用的函数为setUserVisibleHint,通过在其中重写方法,将会达到fragment正确切换的效果。       public void setUserVisible

Activity被回收导致其内部的Fragment

方式一:   MainActivity重写onSaveInstanceState方法,将super.onSaveInstanceState(outState);注释掉,让其不再保存Fragment的状态,达到其随着MainActivity一起被回收的效果! 方式二: @Overrideprotected void onSaveInstanceState(Bundle outSta

vue3 el-menu 菜单Maximum recursive updates exceeded 报错

vue3 用el-menu实现管理后台左侧菜单,报Uncaught (in promise) Maximum recursive updates exceeded in component <ElMenu>. This means you have a reactive effect that is mutating its own dependencies and thus recursivel

Android - 总结Activity与Fragment打开的时候获取组件的大小

Activity中获取 组件大小        代码: @Overridepublic void onWindowFocusChanged(boolean hasFocus) {// TODO Auto-generated method stubsuper.onWindowFocusChanged(hasFocus);Log.d("TAG", "A-button1-->"+button1);L

fragment懒加载问题

public class LazyBaseFragment extends BasePermissionFragment {private boolean mHasLoadedOnce = false;//子类重写该方法 进行懒加载public void onLazyLoad() {}private boolean isLazy;/** * 请用viewPager第1个fragment

Android基础——Fragment详解

文章目录 1 Fragment的产生与介绍1.1 Fragment的生命周期1.2 Fragment的生命周期分析 2 Fragment的使用2.1 静态使用Fragment2.2动态使用Fragment 3 Fragment的管理3.1 FragmentManager3.2 FragmentTransaction3.3 Fragment间传递参数 1 Fragment的产生与介

android面试:Fragment 和 Activity 有什么区别?它们之间又有什么关系?

在Android开发中,Fragment和Activity是两个重要的组件,它们各自有不同的特性和用途。 区别 定义: Activity:是一个用户界面组件,代表一个单一的屏幕,用户可以与之交互。每个Activity都有自己的生命周期。Fragment:是一个可重用的UI组件,通常是Activity的一部分。Fragment可以在Activity中嵌套和组合,允许更灵活的UI设计。 生命周

Android 动态更新Viewpager+fragment完美解决方案

最近遇到个问题,一直没有找到很好的解决方案,今天终于解决了。 Viewpager嵌套多个Fragment 现在我要改变fragment中的数据。 这个非常的简单,网上有很多答案都能解决。 改变Viewpager的数量,也就是说我要动态的增加或者删除Viewpager的页面数量。 这个就非常操蛋了。 查遍资料,才找到解决办法。写下来备忘。 从FragmentPagerAdapter的运行机制