【发布时间】:2013-06-05 18:51:09
【问题描述】:
首先,关于我的项目的一些信息:
我有一个由几个片段组成的应用程序。 (我有一个扩展 FragmentActivity 的类和另一个扩展 FragmentPagerAdapter 的类。) 所以实际上我的代码是在片段中运行的。
我在其中一个片段中调用异步任务来进行一些计算。 asyncTask 是一个单独的文件,该类不位于 Fragment 类中。
所以一个文件是异步任务,另一个是片段(片段中的变量不能被异步任务直接访问!!!)。
我可以使用 ProgressDialog 显示 asyncTask 的结果。 但是,我希望能够将数据(异步任务的结果)返回到我在片段中拥有的变量。到目前为止我尝试过的是:
- 使用来自 asyncatask.execute() 的 get()
我试着这样做:
我使用了以下在单击按钮后调用的代码。
mytask1 = new myAsyncTask(this);
String result =mytask1.execute(value1).get();
但是这会导致主线程卡住并等待异步任务完成。
2.使用 loginSharePreferens
loginPreferences = getActivity().getSharedPreferences("loginPrefs", Context.MODE_PRIVATE);
loginPrefsEditor = loginPreferences.edit();
loginPrefsEditor.putString("result", result);
loginPrefsEditor.commit();
这给了我错误。
3.我也试过这个SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext() );
这与第二种方法类似。
4.我试图在我的片段中创建一个只设置值的方法,并尝试在片段中调用它
MyFrragment1.this.setRestult(1); // is called in the onPostExecute of the asyncTask
public void setRestult(int result){
this.test1=result; ///inside of the fragment
}
这给了我错误:“MyFragment1 类型的封闭实例在范围内不可访问”
我不知道还能尝试什么。有什么想法吗?
【问题讨论】:
-
@Raghunandan 我认为你给我的链接正好相反。我想将异步任务的结果检索回我的片段
-
另外,我的情况不同,我没有片段内的异步任务,而是单独的
标签: android android-fragments android-asynctask