Android 将结果从asynctask返回到片段
首先,关于我的项目的一些信息: 我有一个由几个片段组成的应用程序。我有一个类扩展FragmentActivity,另一个类扩展FragmentPagerAdapter。 所以实际上我的代码是在片段中运行的 我调用其中一个片段中的asynctask来进行一些计算。asyncTask是一个单独的文件,该类不位于Fragment类内部 因此,1个文件是asynctask,另一个文件是asynctask无法直接访问片段中的fragmet变量 我可以使用ProgressDialog显示异步任务的结果。 但是,我希望能够将asynctask的数据结果返回到片段中的变量。到目前为止,我尝试的是: 使用从asyncatask.execute获取 我试着这样做: 我使用了单击按钮后调用的以下代码Android 将结果从asynctask返回到片段,android,android-fragments,android-asynctask,Android,Android Fragments,Android Asynctask,首先,关于我的项目的一些信息: 我有一个由几个片段组成的应用程序。我有一个类扩展FragmentActivity,另一个类扩展FragmentPagerAdapter。 所以实际上我的代码是在片段中运行的 我调用其中一个片段中的asynctask来进行一些计算。asyncTask是一个单独的文件,该类不位于Fragment类内部 因此,1个文件是asynctask,另一个文件是asynctask无法直接访问片段中的fragmet变量 我可以使用ProgressDialog显示异步任务的结果。 但
mytask1 = new myAsyncTask(this);
String result =mytask1.execute(value1).get();
但是,这会导致主线程卡住并等待异步任务完成
2.使用登录共享首选项
loginPreferences = getActivity().getSharedPreferences("loginPrefs", Context.MODE_PRIVATE);
loginPrefsEditor = loginPreferences.edit();
loginPrefsEditor.putString("result", result);
loginPrefsEditor.commit();
这给了我错误。
3.我也试过这个
SharedReferences SharedRefers=首选项管理器。GetDefaultSharedReferencesGetApplicationContext
这与第二种方法相似
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类型的封闭实例
我不知道还能尝试什么。有什么想法吗?您可以使用onPostExecute方法,该方法在UI线程中运行,并在doInBackground完成后调用。您可以在片段中覆盖它,如下所示:
new myAsyncTask() {
@Override
protected void onPostExecute( Result result ) {
super.onPostExecute( result );
// Do something with result here
}
}.execute(value1);
您可以使用onPostExecute方法,该方法在UI线程中运行,并在doInBackground完成后调用。您可以在片段中覆盖它,如下所示:
new myAsyncTask() {
@Override
protected void onPostExecute( Result result ) {
super.onPostExecute( result );
// Do something with result here
}
}.execute(value1);
相像的question@Raghunandan我想你给我的链接正好相反。我想将asynctask的结果检索回我的片段。同样,我的情况不同,我在片段中没有asynctask,但它们是相似的question@Raghunandan我想你给我的链接正好相反。我想把asynctask的结果恢复到我的片段中。同样,我的情况不同,我在片段中没有asynctask,但是把你分开了,先生,为我节省了很多时间!非常感谢您,先生,您为我节省了很多时间!多谢各位