Android 4.0.3 で呼び出しMenuItem.setActionView(null)
てから画面を回転させると、アプリケーションがクラッシュします。
私がやろうとしているのは、項目をクリックすると に変わるGMailactionbar
アプリの をエミュレートすることです。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>