6

編集:1行の質問:

MenuItem onOptionsItemSelectedからコンテキストを渡す方法は?

編集2:これは私がやっていることの全体的な兆候です: https://github.com/JakeWharton/ActionBarSherlock/blob/master/samples/fragments/src/com/actionbarsherlock/sample/fragments/FragmentTabsPager.java


ActionBarSherlock に基づいてアプリを構築しています。タブ、フラグメント、およびビューページャーを使用します。可能な限り汎用性を持たせることを目的としています。タブには、Web ビューまたはリストビューのいずれかを含めることができます。スクリーンショットは次のとおりです。

http://dl.dropbox.com/u/11218283/Screenshot_2012-05-16-13-33-08.png

タブ (SherlockListFragment) が最初に読み込まれるとき、ASyncTask を使用してフィードからコンテンツを読み取ります。OnPostExecute リストを更新し、結果を SharedPreference 文字列に保存します (キャッシュの方法として)。ご想像のとおり、AsyncTask にはこれを行うためのコンテキストが必要です。次のように、SherlockListFragment から asynctask を呼び出しています。

x.new refreshList(this,getActivity()).execute();

(x は現在のファイルへの参照です)。

そして、このように私の AsyncTask に転送します

 public refreshList(TabList a,Context b){
    this.mContext = a;
    this.mCont = b;
}

すべて正常に動作します。しかし、ご覧のとおり、リフレッシュ用のメニュー項目を追加しました。私が設定した方法では、適切なコンテキスト情報を取得していないため、ASyncTask を再実行できません。この状況で更新を実行する方法を誰か教えてもらえますか?

喜んで助けてくれる人がもっとコードを見る必要があるなら、私は喜んで応じます。

前もって感謝します。

4

3 に答える 3

7

onOptionsItemSelected のボタンに応答していると言ったので、コンテキストはthisアクティビティでそれを行っている場合と同じです。フラグメントの場合はgetActivity().

于 2012-05-23T18:49:23.970 に答える
0

Jason は私の質問に正しく答えましたが、後で別の問題があることがわかりました。FragmentActivity に onOptionsItemSelected を配置しました。ListFragment 内に移動すると、彼の答えが機能しました。

于 2012-05-23T20:10:27.900 に答える
0

View のサブクラスであるすべてのウィジェットと同様に、更新ボタンは、view.getContext()を呼び出して、それが作成されたアクティビティ コンテキストを取得できます。

于 2012-05-17T11:59:44.673 に答える