2

データベースからデータをロードするためにをListView Activity使用するがあります。AsyncTaskこのアクティビティには、のアクティビティリストビューにデータ項目があるかどうかを確認するオプションメニューがありますonPrepareOptionsMenu()

アイテムがある場合は、に表示されているオプションの1つを有効にしてActionBar、ユーザーがアイテムを削除できるようにします。

これで、アクティビティが開始すると、AsyncTaskが開始され、AsyncTaskの実行中にonPrepareOptionsMenu()が実行されるため、デバイスが反転され、リストビューデータがインスタンスとして渡され、リストビューデータがバイパスされない限り、このメニュー項目が有効になることはありません。 AsyncTask。

したがって、AsyncTaskonPostExecute()で呼び出しますinvalidateOptionsMenu()が、それは更新するメニューではないようです(とにデバッグコードがonCreateOptionsMenu()ありonPrepareOptionsMenu()、どちらも起動されません)。助けていただければ幸いです。

4

2 に答える 2

1

この問題は、不正なグローバル変数値に関連していました。メソッド内のコードをonPrepareOptionsMenu()真ではないグローバルブール値でゲートウェイ処理していたため、デバッグステートメントをブールチェックの内側に置いていました...その結果、デバッグステートメントが実行されませんでした。

その問題に対処した後、すべてが期待どおりに機能しており、上記のコードは正しいです。

于 2011-12-22T03:14:34.103 に答える
1

haveDataアクティビティのようにグローバルブール値を作成してみてonPostExecute()、それに応じてブール値を true または false に設定できます。次に、ブール値に基づいてチェックを行い、onPrepareOptionsMenu()それに応じてメニュー項目を有効にします。

前回試したときはうまくいきましたが、なぜうまくいかなかったのかわかりません。動作しない場合はそこからデバッグを行い、実行されていない場所を教えてください。

于 2011-12-22T02:28:01.673 に答える