我遇到此活動的問題。AsyncTask後的捆綁包中的空指針異常
package com.ilocal.diary;
import java.util.ArrayList;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
public class ViewDiary extends Activity {
private String userid = "1";
private String response;
private String url;
private Bundle bundle = new Bundle();
private ArrayList<NameValuePair> postParameters;
private ProgressDialog dialog = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.empty_layout);
this.dialog = ProgressDialog.show(this, "Working..", "Downloading Data...", true, false);
bundle = this.getIntent().getExtras();
if (bundle != null) {
userid = bundle.getString("USERID");
}
url ="http://www.ilocaltest.x10.mx/android/fetchdiary.php";
postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("userid", userid));
new PHPQuery().execute(url, postParameters);
}
private class PHPQuery extends AsyncTask<Object, Void, String > {
protected String doInBackground(Object... params) {
try {
response = CustomHttpClient.executeHttpPost(url, postParameters);
} catch (Exception e) {
System.out.println("HTTP error - " + e.toString());
}
System.out.println(response);
return response;
}
protected void onPostExecute(String result) {
dialog.dismiss();
System.out.println(result);
if (!(result == null)) {
bundle.putString("RESPONSE", result);
Intent i = new Intent(ViewDiary.this, DisplayDiary.class);
i.putExtras(bundle);
startActivity(i);
ViewDiary.this.finish();
}
else
finish();
}
}
}
一切工作,直到我嘗試束從的AsyncTask的結果時,我得到一個nullpointerexecption在該行
bundle.putString("RESPONSE", result);
我知道,結果被傳遞到onPostExecute方法,以便在哪裏例外來自並且如何解決它。
馬丁
隨着'如果{'這應該是爲'如果(結果相同= NULL((結果== NULL)!)! ){''''只是認爲你應該知道這一點,並且'bundle'或'result'必須爲空,我猜測它是結果,因爲如果結果爲空,它只會到達那裏。 – Austin 2011-06-12 03:58:23
你可以在這裏放一個調試日誌,看看它是否運行? bundle = this.getIntent()。getExtras(); if(bundle!= null){ userid = bundle.getString(「USERID」); Log.d(「PHP」,「Found extras」); } – 2011-06-12 03:58:27
@Christopher增加了額外的功能。我已經知道,沒有真正的軟件包,所以創建了一個新的活動,以便發送一個包,並刪除創建一個新的包,它的工作原理。它一定是空的包。但爲什麼這應該有所作爲。在上一個創建bundle的活動中,它將一直是空的,直到將一個字符串放入其中,這與此活動相同。 – martincm 2011-06-12 04:19:25