2012-11-02 2 views
4

Android 앱에서 doInBackground() 메서드에서 JSONObject를 onPostExecute() 메서드로 반환하고 싶습니다.AsyncTask에서 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() 메서드에서 onPostExecute() 메서드로 JSONObject를 반환 할 수 있습니까?

답변

4

편집 JSONObject로 통과 AsyncTask<T1, T2, T3> 경우 :

이 당신을 도울 수,

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()> 

P robably 당신은 메서드 선언에서 반환 값과 매개 변수를 변경하지 않아도됩니다.

는 그냥 PARAMS에 따라

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

방법이 자동으로 생성됩니다 다음 줄을 만들고

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

개인 클래스 AddAsyncTask에 대해 설명 주셔서 감사합니다 배경 계산 결과의 유형은 doInBackground(), 무효로 전달해야하는 입력의 어떤 종류의 AsyncTask를을 <확장 반환 값의 유형 onPostExcute()로 돌아 가야합니다. AsyncTask 에서 First String과 Last String에 대해 설명했는데, 왜 우리가 사용했는지, 중간 genric 유형의 목적은 무엇입니까? Void가 아닌 경우 ... 설명해주세요 ..... – Dhana

+1

Gud qtn dude, AsyncTask 보호 된 void onProgressUpdate (정수 ... 진행 _ 값) { setProgressPercent (progress_value [0]); } 정수 값은 진행률 또는 크기 또는 진행 메시지로 표시 할 내용을 나타냅니다. onProgressUpdate() 메소드를 구현하지 않았으므로 Dis.So를 추가하여 U를 혼란스럽게 만들고 싶지는 않습니다. –

2

확인에 언급 된 형태를 돌려주는 지금,이주의 깊게 살펴

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

AsyncTask 세 번째 매개 변수는 String이므로 변경하십시오. JSONObject. 같은

,

private class AddAsyncTask extends AsyncTask<String, Void, JSONObject> 
2

대신

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 < 매개 변수, 진행, 결과>

  1. 매개 변수는 실행시 작업에 전송되는 매개 변수의 유형입니다.
  2. 진행률, 백그라운드 계산 중에 게시 된 진행률 단위의 유형입니다.
  3. 결과,
관련 문제