2014-05-08 2 views
0

J'utilise la base de données MySQL, et je choisis mes données de la base de données en utilisant JSONParser.class que j'ai trouvé sur Internet, mais la valeur toujours montrant Null, s'il vous plaît aider, je suis nouveau à cejava.lang.Nullpointerexception en utilisant JSONParser

Voilà ma principale classe d'activité:

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); 
    } 
} 

Et voici mon fichier 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); 
?> 

voici mon erreur 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

Et votre logcat? Où est le NPE? – 323go

+1

Afficher l'erreur logcat. –

+0

'jArray' peut être' null'. S'il vous plaît vérifier – Keerthivasan

Répondre

1

Vous paramètre de passage de l'application client avec le nom « Kode » en ligne

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

Mais vous acceptez avec le nom « kdanggota » en ligne

$kd=$_POST['kdanggota']; 

Par conséquent serveur envoie vide tableau et vous ne vérifiez pas que le tableau est vide ou non. Veuillez utiliser le même nom de paramètre lors de l'envoi et de la réception de données.

+0

oui thx je dois avoir oublié – user3488298

1

une erreur que je peux voir sans le logcat qui est comme suit;

1 - Vous avez attribué kode clé dans votre BasicNameValuePair pendant que vous essayez de chercher 'kdanggota' en vous php Wile dans $_POST qui n'existe pas. Donc, changer la quatrième ligne de php comme suit

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

S'il vous plaît poster aussi logcat pour plus d'informations

+0

oui cela aide vraiment, je l'ai fixé thx – user3488298

Questions connexes