2014-05-08 25 views
0

我正在使用MySQL數據庫,並使用我在網上找到的JSONParser.class從數據庫中選擇我的數據,但值始終顯示空,請大家幫忙,我是新手這java.lang.Nullpointerexception使用JSONParser

這是我的主要活動類:

public class Profil extends Activity{ 
    private static String url = "http://10.0.2.2/koperasidb/tampil_profil.php"; 
    private static final String TAG_ANGGOTA = "anggota"; 
    private JSONParser jsonParser; 
    private JSONObject json; 
    private JSONArray jArray; 

    String kodeanggota; 
    private Session session;//global variable 
    private String no_ba,nm,jk,agama,tmptlahir,tgllahir,blnlahir,thnlahir,status,alamat,notelp,email; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     session = new Session(this); //onCreate Session class 
     //mengambil string kdanggota 
     kodeanggota = session.getkdanggota(); 

     jsonParser = new JSONParser(); 
     ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>(); 
     postParameters.add(new BasicNameValuePair("kode", kodeanggota)); 
     //profil = new ArrayList<HashMap<String, String>>(); 
     try { 
      json = jsonParser.makeHttpRequest(url, "POST", postParameters); 
      jArray = json.getJSONArray(TAG_ANGGOTA); 
      for (int i = 0; i < jArray.length(); i++) { 
       JSONObject job = jArray.getJSONObject(i); 
       no_ba = job.getString("no_ba"); 
       nm = job.getString("nama"); 
       jk = job.getString("jk"); 
       agama = job.getString("agama"); 
       tmptlahir = job.getString("tmptlhr"); 
       tgllahir = job.getString("tgllhr"); 
       blnlahir = job.getString("blnlhr"); 
       thnlahir = job.getString("thnlhr"); 
       status = job.getString("status"); 
       alamat = job.getString("alamat"); 
       notelp = job.getString("notelp"); 
       email = job.getString("email"); 

      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } finally { 
      tampilkanprofil(); 
     } 
    } 

    private void tampilkanprofil() { 
     TextView profilnama = (TextView) findViewById(R.id.profilnamaanggota); 
     profilnama.setText(nm); 
     TextView profiljk = (TextView) findViewById(R.id.profiljk); 
     profiljk.setText(jk); 
     TextView profilnoba = (TextView) findViewById(R.id.profilkodeba); 
     profilnoba.setText(no_ba); 
     TextView profilagama = (TextView) findViewById(R.id.profilagama); 
     profilagama.setText(agama); 
     TextView profilttl = (TextView) findViewById(R.id.profilttl); 
     profilttl.setText(tmptlahir + ", " + tgllahir + " " + blnlahir + " " + thnlahir); 
     TextView profilstatus = (TextView) findViewById(R.id.profilstatus); 
     profilstatus.setText(status); 
     TextView profilalamat = (TextView) findViewById(R.id.profilalamat); 
     profilalamat.setText(alamat); 
     TextView profilnotelp = (TextView) findViewById(R.id.profilnotelp); 
     profilnotelp.setText(notelp); 
     TextView profilemail = (TextView) findViewById(R.id.profilemail); 
     profilemail.setText(email); 
    } 
} 

這是我的PHP文件:

<?php 
include ("koneksi.php"); 

$response = array(); 
$kd=$_POST['kdanggota']; 
$result = mysql_query("SELECT * FROM anggota_baru WHERE kd_anggota ='$kd' ") or die(mysql_error()); 

$response["anggota"] = array(); 
while($row = mysql_fetch_array($result)){ 
    $profil = array(); 
    $profil["no_ba"] = $row["no_ba"]; 
    $profil["nama"] = $row["nama_lengkap"]; 
    $profil["jk"] = $row["kelamin"]; 
    $profil["agama"] = $row["agama"]; 
    $profil["tmptlhr"] = $row["tempat_lahir"]; 
    $profil["ttgllhr"] = $row["tgl_lahir"]; 
    $profil["blnlhr"] = $row["bln_lahir"]; 
    $profil["thnlhr"] = $row["thn_lahir"]; 
    $profil["status"] = $row["status_nikah"]; 
    $profil["alamat"] = $row["alamat"]; 
    $profil["notelp"] = $row["no_telp"]; 
    $profil["email"] = $row["email"]; 

    array_push($response["anggota"],$profil); 
} 
echo json_encode($response); 
?> 

,這裏是我的logcat錯誤:

05-08 20:20:26.246: WARN/System.err(871): org.json.JSONException: No value for no_ba 
05-08 20:20:26.256: WARN/System.err(871):  at org.json.JSONObject.get(JSONObject.java:354) 
05-08 20:20:26.256: WARN/System.err(871):  at org.json.JSONObject.getString(JSONObject.java:510) 
05-08 20:20:26.256: WARN/System.err(871):  at com.randy.koperasidb.Profil.onCreate(Profil.java:55) 
05-08 20:20:26.256: WARN/System.err(871):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
05-08 20:20:26.266: WARN/System.err(871):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1586) 
05-08 20:20:26.266: WARN/System.err(871):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1638) 
05-08 20:20:26.266: WARN/System.err(871):  at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
05-08 20:20:26.286: WARN/System.err(871):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:928) 
05-08 20:20:26.286: WARN/System.err(871):  at android.os.Handler.dispatchMessage(Handler.java:99) 
05-08 20:20:26.296: WARN/System.err(871):  at android.os.Looper.loop(Looper.java:123) 
05-08 20:20:26.296: WARN/System.err(871):  at android.app.ActivityThread.main(ActivityThread.java:3647) 
05-08 20:20:26.306: WARN/System.err(871):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-08 20:20:26.306: WARN/System.err(871):  at java.lang.reflect.Method.invoke(Method.java:507) 
05-08 20:20:26.316: WARN/System.err(871):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
05-08 20:20:26.316: WARN/System.err(871):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
05-08 20:20:26.327: WARN/System.err(871):  at dalvik.system.NativeStart.main(Native Method) 
05-08 20:20:26.346: DEBUG/AndroidRuntime(871): Shutting down VM 
05-08 20:20:26.346: WARN/dalvikvm(871): threadid=1: thread exiting with uncaught exception (group=0x40015560) 
05-08 20:20:26.366: ERROR/AndroidRuntime(871): FATAL EXCEPTION: main 
05-08 20:20:26.366: ERROR/AndroidRuntime(871): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.randy.koperasidb/com.randy.koperasidb.Profil}: java.lang.NullPointerException 
05-08 20:20:26.366: ERROR/AndroidRuntime(871):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1622) 
05-08 20:20:26.366: ERROR/AndroidRuntime(871):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1638) 
05-08 20:20:26.366: ERROR/AndroidRuntime(871):  at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
05-08 20:20:26.366: ERROR/AndroidRuntime(871):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:928) 
05-08 20:20:26.366: ERROR/AndroidRuntime(871):  at android.os.Handler.dispatchMessage(Handler.java:99) 
05-08 20:20:26.366: ERROR/AndroidRuntime(871):  at android.os.Looper.loop(Looper.java:123) 
05-08 20:20:26.366: ERROR/AndroidRuntime(871):  at android.app.ActivityThread.main(ActivityThread.java:3647) 
05-08 20:20:26.366: ERROR/AndroidRuntime(871):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-08 20:20:26.366: ERROR/AndroidRuntime(871):  at java.lang.reflect.Method.invoke(Method.java:507) 
05-08 20:20:26.366: ERROR/AndroidRuntime(871):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
05-08 20:20:26.366: ERROR/AndroidRuntime(871):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
05-08 20:20:26.366: ERROR/AndroidRuntime(871):  at dalvik.system.NativeStart.main(Native Method) 
05-08 20:20:26.366: ERROR/AndroidRuntime(871): Caused by: java.lang.NullPointerException 
05-08 20:20:26.366: ERROR/AndroidRuntime(871):  at com.randy.koperasidb.Profil.tampilkanprofil(Profil.java:78) 
05-08 20:20:26.366: ERROR/AndroidRuntime(871):  at com.randy.koperasidb.Profil.onCreate(Profil.java:72) 
05-08 20:20:26.366: ERROR/AndroidRuntime(871):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
05-08 20:20:26.366: ERROR/AndroidRuntime(871):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1586) 
05-08 20:20:26.366: ERROR/AndroidRuntime(871):  ... 11 more 
05-08 20:20:26.396: WARN/ActivityManager(61): Force finishing activity com.randy.koperasidb/.Profil 
05-08 20:20:26.416: WARN/ActivityManager(61): Force finishing activity com.randy.koperasidb/.Home 
05-08 20:20:26.927: WARN/ActivityManager(61): Activity pause timeout for HistoryRecord{40693400 com.randy.koperasidb/.Profil} 
05-08 20:20:28.177: INFO/Process(871): Sending signal. PID: 871 SIG: 9 
05-08 20:20:28.207: INFO/ActivityManager(61): Process com.randy.koperasidb (pid 871) has died. 
05-08 20:20:28.217: INFO/WindowManager(61): WIN DEATH: Window{406a6770 com.randy.koperasidb/com.randy.koperasidb.login paused=false} 
05-08 20:20:28.257: ERROR/InputDispatcher(61): channel '40774e40 com.randy.koperasidb/com.randy.koperasidb.Home (server)' ~ Consumer closed input channel or an error occurred. events=0x8 
05-08 20:20:28.257: ERROR/InputDispatcher(61): channel '40774e40 com.randy.koperasidb/com.randy.koperasidb.Home (server)' ~ Channel is unrecoverably broken and will be disposed! 
05-08 20:20:28.327: INFO/WindowManager(61): WIN DEATH: Window{40774e40 com.randy.koperasidb/com.randy.koperasidb.Home paused=true} 
05-08 20:20:29.027: WARN/InputManagerService(61): Got RemoteException sending setActive(false) notification to pid 871 uid 10041 
+2

和你logcat的? NPE在哪裏? – 323go

+1

發佈logcat錯誤。 –

+0

'jArray'可能是'null'。請仔細檢查! – Keerthivasan

回答

1

您是從客戶端應用程序符合

postParameters.add(new BasicNameValuePair("kode", kodeanggota)); 

傳遞參數名稱爲「科德」但你是名稱爲「kdanggota」一致接受

$kd=$_POST['kdanggota']; 

因此服務器發送空數組,而你不檢查數組是否爲空。發送和接收數據時請使用相同的參數名稱。

+0

是thx我必須忘記 – user3488298

1

一個錯誤,我可以看到沒有logcat,如下所示;

1 - 你已經在你的BasicNameValuePair,而你試圖在你的PHP詭計在$_POST不存在獲取'kdanggota'分配的鍵kode。因此,改變PHP的第四行如下

`$kd=$_POST['kode'];` //You need to write kode here because that is what is the key for your pair. 

還請張貼logcat的更多信息

+0

是的,這真的很有幫助,我已經修復了thx – user3488298