当前位置: 首页 > 面试题库 >

如何将JSONObject从doInBackground()方法返回到AsyncTask的onPostExecute()方法?

庞元青
2023-03-14
问题内容

在Android应用程序中,我想从doInBackground()方法返回JSONObject onPostExecute()
这是代码:

private class AddAsyncTask extends AsyncTask<String, Void, String>
     {
         JSONObject jsonObjRecv;
         String result;

    @Override
    protected JSONObject doInBackground(JSONObject... params) {
        AssetObj assetObj = new AssetObj();
        assetObj.setAssetName(txtname.getText().toString());
        assetObj.setMobileNo(txtmobile.getText().toString());
        assetObj.setOwnerId(myApp.getOwnerId());
        assetObj.setStartTime(startTime.getText().toString());
        assetObj.setEndTime(endTime.getText().toString());
        assetObj.setInterval(interval.getText().toString());
        JSONObject jsonObjRecv = SyncService.AddNewAssetRequest(assetObj);
        return jsonObjRecv;
     }
     protected void onPostExecute(JSONObject obj){
                    if(obj != null)
                    {
                        //do something
                    }

我尝试了此代码,但出现错误。是否可以从doInBackground()方法返回JSONObject onPostExecute()


问题答案:

编辑:

这可以帮助您,

private class AddAsyncTask extends AsyncTask<String, Void, JSONOnject>
 {
     JSONObject jsonObjRecv;
     String result;

@Override
protected JSONObject doInBackground(String... params) {
    AssetObj assetObj = new AssetObj();
    assetObj.setAssetName(txtname.getText().toString());
    assetObj.setMobileNo(txtmobile.getText().toString());
    assetObj.setOwnerId(myApp.getOwnerId());
    assetObj.setStartTime(startTime.getText().toString());
    assetObj.setEndTime(endTime.getText().toString());
    assetObj.setInterval(interval.getText().toString());
    JSONObject jsonObjRecv = SyncService.AddNewAssetRequest(assetObj);
 }
 protected void onPostExecute(JSONObject obj){
            if(obj != null)
            {
                //do something
            }

很明显,

private class AddAsyncTask extends AsyncTask<What type of input you need to pass to doInBackground(), Void, What type of return value you need to return to onPostExcute()>

可能您不需要在方法声明中更改返回值和参数。

只需创建以下行

private class AddAsyncTask extends AsyncTask<String, Void, JSONOnject>

方法将根据您在中提到的参数和返回类型自动创建

private class AddAsyncTask extends AsyncTask<String, Void, JSONOnject>


 类似资料:
  • 问题内容: 我有一个Asynctask,它检索两个int值,并且我想将它们传递给onPostExecute以在视图上显示它们。 这是我的代码: 先感谢您。 问题答案: 您可以定义一个Wrapper类,其中包含两个整数: 并用它代替:

  • 问题内容: 我试图通过以下方式获取JSON对象: 以下是处理所有HTTP请求的一般方法 处理JSON结果的方法如下: 我想问一下如何以异步方式取回JSONObject(第一个代码段)。 所有请求均使用Volley库处理。 非常感谢您的任何建议。 问题答案: 供您评论 我认为异步是由Volley自动提供的。所以我需要知道如何将JSON数据放入第一个片段中 IMO,而不是您的第一个片段,您可以尝试以下

  • 我正试图在android工作室中建立一个非常基本的天气应用程序。我正在使用AsyncClass返回多个字符串。 正如您在代码中看到的,我使用了一个名为“wrapper”的类,用于存储字符串,这样我就可以返回一个类对象,并在AsyncTask的onPostExecute方法中使用它。我面临的问题是,当我测试应用程序时,所有返回的字符串都是未定义的(包装类的默认值)。这意味着没有在doInBackgr

  • 我正在尝试在我的应用程序中获取地震数据,结果我的应用停止工作。我的代码中没有错误。甚至我也添加了互联网权限。但当获取数据时,我认为会发生这种错误。我已调试过,但找不到问题。 日志猫: 2021-03-27 15:23:32.118 9533-9560/com . example . quakereportapp E/eglCodecCommon:glUtilsParamSize:unknow pa

  • 问题内容: 我正在尝试找出创建AsyncTask的正确方法,以从Internet检索一些数据,然后将这些数据打包并捆绑到Intent中,然后将其传递给新的活动(列表显示)。因此,在第一个活动中,我只有一个EditText和Button。在发生OnClick的情况下,应调用任务,并在完成任务后将数据捆绑到Intent中并传递给下一个Activity。问题是当我从onPostExecute获取结果并将

  • 问题内容: 我想使用AsyncTask从服务器获取Ftp文件夹列表,并将文件夹名称ArrayList返回到主类并更新微调适配器。 在主班我有带适配器的微调器 在AsyncTask中: 那么我应该如何用主类中的ArrayList替换AsyncTask中的arraylist并动态更新Spinner Updater? 问题答案: 您已经将ArrayList 设为 static ,也将其设为public。