何が起こっているのか簡単なシナリオをお話ししましょう。
アクションバーに更新ボタンがあり、何かが読み込まれている間、不確定なProgressStyle(回転する円)に切り替わります。
私のプロジェクトでは、次のレイアウトがあります。(例:res / layout / actionbar_indeterminate_progress.xml)
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center">
<ProgressBar android:layout_width="32dp"
android:layout_height="32dp"
android:layout_marginLeft="12dp"
android:layout_marginRight="12dp"
android:layout_gravity="center"
style="?android:attr/indeterminateProgressStyle" />
</FrameLayout>
ユーザーが更新ボタンをクリックすると、次のようになります。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
com.actionbarsherlock.view.MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.main, menu);
refreshMenuItem = menu.findItem(R.id.menu_refresh);
if (refreshMenuItem != null) {
// Show refresh button if we are in action bar mode, but only if
// there's something to be refreshed
boolean selectedItemExists = (getCurrentBrowsingContainer() != null);
refreshMenuItem.setVisible(selectedItemExists);
if (is_spinner_running) {
refreshMenuItem.setActionView(R.layout.actionbar_indeterminate_progress);
} else {
refreshMenuItem.setActionView(null);
}
}
return super.onCreateOptionsMenu(menu);
}
また、私のres / menu/main.xmlは次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
...
<item android:id="@+id/menu_refresh" android:icon="@drawable/ic_menu_refresh" android:showAsAction="always" android:title="@string/refresh" />
<item android:id="@+id/menu_search" android:title="@string/menu_search" android:icon="@android:drawable/ic_menu_search" android:showAsAction="never" />
<item android:id="@+id/settings" android:title="@string/settings" android:icon="@android:drawable/ic_menu_preferences"></item>
<item android:id="@+id/exit" android:title="@string/exit" android:icon="@android:drawable/ic_menu_close_clear_cancel"></item>
...
</menu>
問題は、たとえばポートレートでアクティビティを開始し、更新ボタンを押すと、うまく停止することです。今、私はそれを回転させて、もう一度更新ボタンを押しますが、今は何らかの理由で不確定な進行状況を表示し続けます。確認したところ、refreshMenuItem.setActionView(null)が呼び出されていますが、それでも不確定なものが表示され続けます。また、refreshMenuItemが何らかの理由で表示されていないように見えます。これは、不確定な進行状況をクリックしたときにonOptionsItemSelectedが呼び出されないためです。
そのため、別のサンプルアプリを試してみましたが、問題なく完全に機能します。だから私はどこでうまくいかないのだろうかと思っています。任意のポインタが役立ちます。