在 android 4.0.3 上,如果您调用MenuItem.setActionView(null)
然后旋转屏幕,我的应用程序将崩溃。
我想要做的是模拟actionbar
GMail应用程序,如果您单击一个项目,它会变成progress bar
.
但是,它现在保存了 的状态,ActionView
当它尝试恢复它时,它会这样说。
无法启动活动 ComponentInfo{}:java.lang.ClassCastException:android.view.AbsSavedState$1 无法转换为 android.widget.ProgressBar$SavedState
有没有人有这方面的工作代码?或解决方法?
哦,actionbarsherlock
如果那件事,我会使用。它不应该因为在4.03上它只是调用所有的系统调用。
代码:
OnCreate()
refreshMenuActionView = new ProgressBar(this.getActivity());
refreshMenuActionView.setIndeterminateDrawable(this.getActivity().getResources().getDrawable(R.drawable.refresh_spinner));
AsyncTask.onPostExecute
if ( refreshMenuItem != null ) {
refreshMenuItem.setActionView(null);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.loadable_menu, menu);
refreshMenuItem = menu.findItem(R.id.refreshMenuItem);
if ( downloader != null && downloader.getStatus() == AsyncTask.Status.RUNNING ) {
refreshMenuItem.setActionView(refreshMenuActionView);
}
searchMenuItem = menu.findItem(R.id.searchMenuItem);
super.onCreateOptionsMenu(menu, inflater);
}
XML:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/refreshMenuItem"
android:title="@string/refresh_item_title"
android:icon="@drawable/ic_menu_refresh"
android:showAsAction="ifRoom" />
<item
android:id="@+id/searchMenuItem"
android:title="@string/search_item_title"
android:icon="@drawable/ic_menu_search"
android:showAsAction="always" />
</menu>