ユーザーがWebサーバーに手動で再同期できるようにするために、アプリケーションにリフレッシュボタンを実装しようとしています。コードは機能しますが、私はアクションビュー(少なくとも、私はそれが私が使っているはずのものだと思う)を理解するのに苦労しています。アクションバーのメニュー項目の表示を変更する
マイメニュー項目はここにある:
<item
android:id="@+id/main_menu_refresh"
android:enabled="true"
android:icon="@drawable/refresh"
android:orderInCategory="1"
android:showAsAction="ifRoom"
android:title="@string/refresh"
android:actionViewClass="android.widget.ProgressBar">
</item>
問題があり、それは常にプログレスバーが表示されます。私はそれが検索ウィジェット(私が実際にオンラインで見ている唯一の例)のように機能していて、showAsAction
にcollapseActionView
というタグを付け加え、それがすぐに表示されないようにしました。しかし、私がリフレッシュボタンをクリックすると、アイコンは消えますが、アクションバーのタイトルも消えるので、タイトルのあるウィンドウの左側にProgressBarが表示されます。私が望んでいたものでもない。土壇場の努力のものとして
、私は私のコードにこれを追加し、XMLからactionViewClass
を削除しようとしました:
MenuItem refresh = (MenuItem)findViewById(R.id.main_menu_refresh);
Log.w("MyApp", "Have Menu");
ProgressBar pb = new ProgressBar(ReadingList.this);
refresh.setActionView(pb);
私にnullポインタエラーを与えて、いずれかの動作しなかったことsetActionView
。
私は、どの機能からでも呼び出すことができる解決策が必要です(開始時に自動同期期間があり、ProgressBarも同様に表示することができます)。その後、静的アイコンに戻すことができます。
私はthis questionで読もうとしましたが、答えが何を意味するのか理解できません。私はそれが言うことをしようとしていたように感じるが、私はそうは思わない。どんな支援も大歓迎です。
編集:sastraxiの提案。
これはこれまでの私のクラスです。しかし、私がしようとすると、参照してください:
MenuItem refresh = (MenuItem)findViewById(R.id.main_menu_refresh);
IconSwitcher ic = (IconSwitcher) refresh.getActionView();
私はNULLポインタエラーを取得します。 IconSwitcherの作成についてボタンXMLは次のとおりです。
<item
android:id="@+id/main_menu_refresh"
android:enabled="true"
android:icon="@drawable/refresh"
android:orderInCategory="1"
android:showAsAction="ifRoom"
android:title="@string/refresh"
android:actionViewClass="IconSwitcher">
</item>
IconSwitcherビューを参照するのは難しいです。
編集2:メニュー項目の参照に問題があるようです。
MenuItem refresh = (MenuItem)findViewById(R.id.main_menu_refresh);
refresh.setVisible(false);
また、可視性を設定しようとすると、nullポインタが返されます。私の参考文献で何が間違っていますか?代わりにProgressBar
にあなたの行動のビュークラスを設定するので
これはsetActionViewでいますが(のMenuItem)findViewById(R.id.main_menu_refreshを)やっている時点で失敗していません。明らかに、MenuItemにActionItemViewをキャストするためのClassCastExceptionがあります。 – Namratha
私はそれを理解しました。私はこれまでの[SO](http://stackoverflow.com/questions/7142722/replacing-an-actionbar-menu-item-icon-with-an-indeterminate-progressbar)の質問を見つけました。そこから、私はGoogle [http://developer.android.com/resources/samples/ActionBarCompat/src/com/example/android/actionbarcompat/ActionBarHelperHoneycomb.html]でこのコードを書いています。それは基本的にその時点でコピーアンドペーストし、完全に動作します。 –