5 Stimmen

Wie gibt man JSONObject von der doInBackground() Methode an die onPostExecute() Methode im AsyncTask zurück?

In der Android-App möchte ich JSONObject von der Methode doInBackground() zur Methode onPostExecute() zurückgeben.
Hier ist der Code:

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)
                    {
                        //etwas tun
                    }

Ich habe diesen Code ausprobiert und einen Fehler erhalten. Ist es möglich, JSONObject von der Methode doInBackground() zur Methode onPostExecute() zurückzugeben?

5voto

Kartihkraj Duraisamy Punkte 3031

Bearbeitet:

Dies könnte Ihnen helfen,

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)
            {
                //etwas tun
            }

Hier ist es deutlich,

private class AddAsyncTask extends AsyncTask

Wahrscheinlich müssen Sie die Rückgabewerte und Parameter in der Methodendeklaration nicht ändern.

Erstellen Sie einfach die folgende Zeile

private class AddAsyncTask extends AsyncTask

Die Methoden werden automatisch entsprechend den Parametern und Rückgabetypen erstellt, die Sie in

private class AddAsyncTask extends AsyncTask

2voto

sujith Punkte 2341

Für AsyncTask geben Sie T3 als JSONObject weiter

2voto

user370305 Punkte 106676

OK, Jetzt schau dir das sorgfältig an,

private class AddAsyncTask extends AsyncTask

In Ihrem AsyncTask ist der dritte Parameter String also ändern Sie ihn in JSONObject .

wie,

private class AddAsyncTask extends AsyncTask

2voto

san Punkte 1872

Statt

private class AddAsyncTask extends AsyncTask

ändern zu

private class AddAsyncTask extends AsyncTask

Der tatsächliche Code

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)
            {
                //etwas tun
            }
}
}

AsyncTask < Params, Progress, Result >

  1. Params, der Typ der Parameter, die an die Aufgabe bei der Ausführung gesendet werden.
  2. Fortschritt, der Typ der Fortschrittsabschnitte, die während der Hintergrundberechnung veröffentlicht werden.
  3. Ergebnis, der Typ des Ergebnisses der Hintergrundberechnung

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X