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

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

 private class AddAsyncTask extends AsyncTask { 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 { 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 

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

只需创建以下行

 private class AddAsyncTask extends AsyncTask 

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

 private class AddAsyncTask extends AsyncTask 

对于AsyncTaskT3传递为JSONObject

好的,现在仔细看看,

 private class AddAsyncTask extends AsyncTask 

在AsyncTask中,第三个参数是String因此将其更改为JSONObject

喜欢,

 private class AddAsyncTask extends AsyncTask 

代替

 private class AddAsyncTask extends AsyncTask 

改成

 private class AddAsyncTask extends AsyncTask 

实际代码

 private class AddAsyncTask extends AsyncTask { 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); } protected void onPostExecute(JSONObject obj){ if(obj != null) { //do something } } } 

AsyncTask <参数,进度,结果>

  1. 参数,执行时发送给任务的参数类型。
  2. 进度,后台计算期间发布的进度单元的类型。
  3. 结果,后台计算结果的类型