我最近开始更新我的应用程序以使用
Android 5.0中引入的新工具栏组件,转而使用操作栏上的自定义视图.我按照指南在这里:
http://antonioleiva.com/material-design-everywhere/并添加工具栏工作正常.问题是,我正在使用导航结构,我有一个MainActivity,并通过将碎片添加到backstack来替换内容.我正在覆盖片段中的onCreateOptionsMenu和onoptionsItemSelected方法来设置工具栏中的菜单项,当我切换片段时图标会相应更改,并且在第一个片段上调用onoptionsItemSelected,但是当我将片段添加到片段时不调用堆栈中.甚至没有调用MainActivity中的onoptionsItemSelected函数,因此Activity不会使用该事件.我还尝试过更换片段而不将其添加到backstack,但仍未调用onoptionsItemSelected.一旦我更改内容Fragment,我有什么错过得到onoptionsItemSelected来调用?相关代码发布在下面.
http://antonioleiva.com/material-design-everywhere/并添加工具栏工作正常.问题是,我正在使用导航结构,我有一个MainActivity,并通过将碎片添加到backstack来替换内容.我正在覆盖片段中的onCreateOptionsMenu和onoptionsItemSelected方法来设置工具栏中的菜单项,当我切换片段时图标会相应更改,并且在第一个片段上调用onoptionsItemSelected,但是当我将片段添加到片段时不调用堆栈中.甚至没有调用MainActivity中的onoptionsItemSelected函数,因此Activity不会使用该事件.我还尝试过更换片段而不将其添加到backstack,但仍未调用onoptionsItemSelected.一旦我更改内容Fragment,我有什么错过得到onoptionsItemSelected来调用?相关代码发布在下面.
应用主题:
<style name="AppThemeLight" parent="@style/Theme.AppCompat.Light"> <item name="actionMenuTextColor">@color/white</item> <item name="android:windowdisablePreview">true</item> <item name="android:windowNoTitle">true</item> <item name="android:windowActionBarOverlay">true</item> <item name="android:windowActionBar">false</item> </style>
在MainActivity中添加工具栏:
Toolbar toolbar = (Toolbar)findViewById( R.id.toolbar ); if (toolbar != null) { setSupportActionBar( toolbar ); getSupportActionBar().setdisplayHomeAsUpEnabled( true ); toolbar.setNavigationIcon( R.drawable.toolbar_icon_menu ); }
@Override public boolean onCreateOptionsMenu( Menu menu ) { Log.v( "Main","onCreateOptionsMenu" ); return super.onCreateOptionsMenu( menu ); } @Override public boolean onoptionsItemSelected( MenuItem item ) { Log.v( "Main","onoptionsItemSelected" ); return super.onoptionsItemSelected( item ); }
@Override public void onCreateOptionsMenu( Menu menu,MenuInflater inflater ) { super.onCreateOptionsMenu( menu,inflater ); inflater.inflate( R.menu.main_looks,menu ); } @Override public boolean onoptionsItemSelected( MenuItem item ) { switch (item.getItemId()) { case R.id.miOptions: onoptions(); return true; default: return super.onoptionsItemSelected( item ); } }
@Override public void onCreateOptionsMenu( Menu menu,inflater ); inflater.inflate( R.menu.user,menu ); } @Override public boolean onoptionsItemSelected( MenuItem item ) { Log.v( "User","onoptionsItemSelected" ); switch (item.getItemId()) { case R.id.miUserShare: onShareUser(); return true; case R.id.miUserEdit: onEditUserProfile(); return true; default: return super.onoptionsItemSelected( item ); } }
解决方法
原文地址:https://www.jb51.cc/android/309081.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。