Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将结果从asynctask返回到片段_Android_Android Fragments_Android Asynctask - Fatal编程技术网

Android 将结果从asynctask返回到片段

Android 将结果从asynctask返回到片段,android,android-fragments,android-asynctask,Android,Android Fragments,Android Asynctask,首先,关于我的项目的一些信息: 我有一个由几个片段组成的应用程序。我有一个类扩展FragmentActivity,另一个类扩展FragmentPagerAdapter。 所以实际上我的代码是在片段中运行的 我调用其中一个片段中的asynctask来进行一些计算。asyncTask是一个单独的文件,该类不位于Fragment类内部 因此,1个文件是asynctask,另一个文件是asynctask无法直接访问片段中的fragmet变量 我可以使用ProgressDialog显示异步任务的结果。 但

首先,关于我的项目的一些信息:

我有一个由几个片段组成的应用程序。我有一个类扩展FragmentActivity,另一个类扩展FragmentPagerAdapter。 所以实际上我的代码是在片段中运行的

我调用其中一个片段中的asynctask来进行一些计算。asyncTask是一个单独的文件,该类不位于Fragment类内部

因此,1个文件是asynctask,另一个文件是asynctask无法直接访问片段中的fragmet变量

我可以使用ProgressDialog显示异步任务的结果。 但是,我希望能够将asynctask的数据结果返回到片段中的变量。到目前为止,我尝试的是:

使用从asyncatask.execute获取 我试着这样做:

我使用了单击按钮后调用的以下代码

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,但是把你分开了,先生,为我节省了很多时间!非常感谢您,先生,您为我节省了很多时间!多谢各位