Ich versuche send data from Android app to Raspberry pi from this link. Ich habe alle Schritte ausgeführt, die darin erwähnt werden, aber wenn ich versuche, die Anwendung auszuführen, gibt es mir einen Fehler in Android Studio Logcat.java.lang.NullPointerException: Versuch, die virtuelle Methode 'int org.json.JSONObject.getInt (java.lang.String)' für eine Nullobjekt-Referenz aufzurufen
Der Fehler ist wie folgt: java.lang.NullPointerException: Es wurde versucht, die virtuelle Methode 'int org.json.JSONObject.getInt (java.lang.String)' für einen Nullobjektverweis aufzurufen.
Die Linien sind mit Fehler 102 & 80, die
Zeile ist 80: -> int success = json.getInt ("Erfolg");
Linie 102: -> if (Erfolg == 1)
Hier ist mein Android Studio-Code. Ich erhalte Fehler in MainActivity.java Klasse .:
MainActivity.java
public class MainActivity extends ActionBarActivity {
private ProgressDialog pDialog;
JSONParser jsonParser = new JSONParser();
EditText editText;
@Override
protected void onDestroy() {
try {
if (pDialog != null && pDialog.isShowing()) {
pDialog.dismiss();
}
} catch (Exception e) {
e.printStackTrace();
}
super.onDestroy();
}
EditText editText2;
String String_name;
String Int_Part;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.Name);
editText2 = (EditText) findViewById(R.id.part_nr);
String_name = editText.getText().toString();
Int_Part = editText2.getText().toString();
}
public void Send(View view) {
new Create_Part().execute();
}
class Create_Part extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(MainActivity.this);
pDialog.setMessage("Sending part to the database...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected String doInBackground(String... args) {
List<NameValuePair> params = new ArrayList<>();
params.add(new BasicNameValuePair("Name", String_name));
params.add(new BasicNameValuePair("part_nr", Int_Part));
JSONObject json = jsonParser.makeHttpRequest("192.168.0.190/db_create.php.php", "POST", params);
try {
int success = json.getInt("success");
if(success == 1){
finish();
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
protected void onPostExecute(String file_url){
pDialog.dismiss();
}
}
}
Logcat Fehler:
04-18 16:26:11.493 2818-3010/com.example.androidphp2 E/AndroidRuntime: FATAL
EXCEPTION: AsyncTask #4
Process: com.example.androidphp2, PID: 2818
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:309)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int org.json.JSONObject.getInt(java.lang.String)' on a null object reference
at com.example.androidphp2.MainActivity$Create_Part.doInBackground(MainActivity.java:102)
at com.example.androidphp2.MainActivity$Create_Part.doInBackground(MainActivity.java:80)
at android.os.AsyncTask$2.call(AsyncTask.java:295)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Problem hier 'int success = json.getInt ("Erfolg");' –
Sieht aus wie 'jsonParser.makeHttpRequest ("192.168.0.190/db_create.php.php", "POST", params);' return null – Jens
Sie erhalten keine Antwort oder vielleicht keine Antwort, deshalb ist Ihr 'json' null und Sie versuchen es zu benutzen. Setzen Sie vor der Verwendung von 'json.getIntent()' auch einen Null-Check. –