首先,关于我的项目的一些信息:从asynctask返回结果到一个片段
我有一个由多个片段组成的应用程序。 (我有一个类扩展了FragmentActivity,另一个扩展了FragmentPagerAdapter。) 所以实际上我的代码在Fragments中运行。
我在其中一个片段中调用了一个asynctask来做一些计算。 asyncTask是一个单独的文件,该类不在Fragment类中。
所以1个文件是asynctask,另一个是fragmet(片段中的变量不能被asynctask直接访问!!!)。
我可以使用ProgressDialog显示asyncTask的结果。 但是我希望能够将数据(asynctask的结果)返回到我的片段中的变量。什么到目前为止,我已经试过是:
- 运用asyncatask.execute的get()()
我试图做这样的:
我用下面的代码被称为点击按钮后。
mytask1 = new myAsyncTask(this);
String result =mytask1.execute(value1).get();
但是,这会导致主线程卡住并等待asynctask完成。
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没有外围实例可在范围内访问“
我不知道还有什么要尝试。有任何想法吗 ?
http://stackoverflow.com/questions/16627492/how-to-return-an-object-to-the-fragment-from-a-nested- static-asynctask /类似的问题 – Raghunandan
@Raghunandan我认为你给我的链接是相反的。我想检索asynctask的结果回我的片段 –
另外,我的情况是不同的,我没有asynctask里面的片段,但分开 –