如何将来自MenuItem onOptionsItemSelected的上下文传递给ASyncTask?

Vic*_*c V 5 static android fragment android-asynctask actionbarsherlock

编辑:一行中的问题:

如何从MenuItem onOptionsItemSelected传递上下文?

编辑2:这是我正在做的事情的全局指示:https://github.com/JakeWharton/ActionBarSherlock/blob/master/samples/fragments/src/com/actionbarsherlock/sample/fragments/FragmentTabsPager.java


我正在构建一个基于ActionBarSherlock的应用程序.它使用制表符,片段和viewpager.它意味着尽可能多才多艺.选项卡可以包含webview或列表视图.这是一个截图:

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

首次加载选项卡(SherlockListFragment)时,它会使用ASyncTask从Feed中读取内容.OnPostExecute它更新列表并将结果保存到SharedPreference字符串(作为缓存的一种方式).可以想象,AsyncTask需要上下文来执行此操作.我正在调用SherlockListFragment中的asynctask,如下所示:

x.new refreshList(this,getActivity()).execute();
Run Code Online (Sandbox Code Playgroud)

(x是对我当前文件的引用).

然后将它转移到我的AsyncTask中

 public refreshList(TabList a,Context b){
    this.mContext = a;
    this.mCont = b;
}
Run Code Online (Sandbox Code Playgroud)

一切正常.但正如你所看到的,我已经添加了一个菜单项以进行刷新.我设置的方式,我无法重新运行ASyncTask,因为我没有相应的上下文信息.谁能告诉我如何在这种情况下进行刷新?

如果有人愿意提供帮助,需要查看更多代码,我很乐意遵守.

提前致谢.

Jas*_*ley 6

您说您正在响应onOptionsItemSelected中的按钮,因此上下文就是this您在Activity中执行的操作.如果在片段中它是getActivity().


Vic*_*c V 0

虽然杰森正确回答了我的问题,但我发现我还有一个问题。我将 onOptionsItemSelected 放置在 FragmentActivity 中。当我将它移到 ListFragment 中时,我得到了他的答案。