Waz*_*_Be 40 null android view android-actionbar
我只想通过代码调整ActionBar MenuItem的视图.
不幸的是,似乎getActionView总是返回null!
我的代码:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = this.getSupportMenuInflater();
inflater.inflate(R.menu.folder, menu);
return super.onCreateOptionsMenu(menu);
}
public boolean onPrepareOptionsMenu(final Menu menu) {
MenuItem menuFolder = menu.findItem(R.id.menu_folder);
Log.i("", "* onPrepareOptionsMenu *" + menuFolder);
Log.i("", "* getActionView *" + menuFolder.getActionView());
Run Code Online (Sandbox Code Playgroud)
日志是:
01-11 22:13:42.884:I /(7893):*onPrepareOptionsMenu*com.actionbarsherlock.internal.view.menu.MenuItemWrapper@41401ac8
01-11 22:13:42.884:I /(7893):*getActionView*null
非常感谢任何帮助
编辑:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/menu_folder"
android:icon="@drawable/ic_menu_archive"
android:showAsAction="always"/>
</menu>
Run Code Online (Sandbox Code Playgroud)
Omi*_*nia 54
你应该使用
app:actionLayout="@layout/menu_actionbar_basket"
Run Code Online (Sandbox Code Playgroud)
这就是你使用的技巧
android:actionLayout="@layout/menu_actionbar_basket"
Run Code Online (Sandbox Code Playgroud)
您将始终在默认工具栏中获得null异常.
Gab*_*han 32
getActionView()
只有在有自定义actionView时才有效setActionView
.
Vit*_*lov 28
对我来说,有效的解决方案是使用app命名空间而不是android.
app:actionViewClass="android.support.v7.widget.SearchView"
别忘了申报:
xmlns:app="http://schemas.android.com/apk/res-auto"
如果您的调试版本工作没有任何问题,并且只有发布版本存在问题,那么这可能是因为proguard配置.如果您已在应用程序中启用了proguard,请将以下行添加到proguard-rules.pro
-keep class android.support.v7.widget.SearchView { *; }
Run Code Online (Sandbox Code Playgroud)
小智 5
第一个解决方案
这可能是你没有设置恰巧actionLayout在菜单文件中,这样设置你的actionLayout在菜单文件
app:actionLayout="@layout/your_action_layout"
第二个解决方案 ,第二个解决方案是
从
android:actionLayout="@layout/your_action_layout"
到
app:actionLayout="@layout/your_action_layout"
归档时间: |
|
查看次数: |
23993 次 |
最近记录: |