[英]How can i return value from AsyncTask class onPostExecute method?
[英]How to return JSONObject from doInBackground() method to onPostExecute() method on AsyncTask?
在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<T1, T2, T3>
將T3
傳遞為JSONObject
好的,現在仔細看看,
private class AddAsyncTask extends AsyncTask<String, Void, String>
在AsyncTask中,第三個參數是String
因此將其更改為JSONObject
。
喜歡,
private class AddAsyncTask extends AsyncTask<String, Void, JSONObject>
代替
private class AddAsyncTask extends AsyncTask<String, Void, String>
改成
private class AddAsyncTask extends AsyncTask<String, Void, JsonObject>
實際代碼
private class AddAsyncTask extends AsyncTask<String, Void, JSONOnject>
{
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 <參數,進度,結果>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.