-2

Ich habe versucht, sqlite Daten hinzuzufügen, aber als ich auf "Add Button" geklickt habe, erscheint der Fehler und meine App wurde geschlossen. Ich verstehe nicht, so viele verschwendete Stunden auf der Suche nach der Lösung von mir ..IllegalStateException auf Knopfdruck erhalten - verursacht durch: java.lang.NullPointerException

hier ist mein Java-Code, AddSampleActivity.java

package com.example.mangan; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

public class AddSampleActivity extends AppCompatActivity { 

DatabaseHelper myDb; 
EditText editNama, editJarak, editRating , editHarga; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_add_sample); 

    editNama = (EditText) findViewById(R.id.nama); 
    editJarak = (EditText) findViewById(R.id.jarak); 
    editRating = (EditText) findViewById(R.id.rating); 
    editHarga = (EditText) findViewById(R.id.harga); 

    myDb = new DatabaseHelper(this); 
} 

public void addData(View view) { 
    boolean isInserted = myDb.insertData(editNama.getText().toString(), 
      editJarak.getText().toString(), 
      editRating.getText().toString(), 
      editHarga.getText().toString()); 
    if(isInserted) 
     Toast.makeText(AddSampleActivity.this,"Data Inserted",Toast.LENGTH_LONG).show(); 
    else 
     Toast.makeText(AddSampleActivity.this,"Data not Inserted",Toast.LENGTH_LONG).show(); 
    } 
} 

mein Layout, activity_add_sample.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:padding="10dp" 
tools:context="com.example.mangan.AddSampleActivity"> 

<EditText 
    android:id="@+id/jarak_editText" 
    android:hint="Jarak" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

<EditText 
    android:id="@+id/rating_editText" 
    android:hint="Rating" 
    android:layout_marginTop="10dp" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

<EditText 
    android:id="@+id/harga_editText" 
    android:hint="Harga" 
    android:layout_marginTop="10dp" 
    android:layout_marginBottom="10dp" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

<Button 
    android:id="@+id/add_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:onClick="addData" 
    android:text="Add"/> 

</LinearLayout> 

Dies ist fullstack Spur

java.lang.IllegalStateException: Could not execute method for android:onClick 
        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293) 
        at android.view.View.performClick(View.java:5675) 
        at android.view.View$PerformClick.run(View.java:22651) 
        at android.os.Handler.handleCallback(Handler.java:836) 
        at android.os.Handler.dispatchMessage(Handler.java:103) 
        at android.os.Looper.loop(Looper.java:208) 
        at android.app.ActivityThread.main(ActivityThread.java:6267) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924) 
       Caused by: java.lang.reflect.InvocationTargetException 
        at java.lang.reflect.Method.invoke(Native Method) 
        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
        at android.view.View.performClick(View.java:5675)  
        at android.view.View$PerformClick.run(View.java:22651)  
        at android.os.Handler.handleCallback(Handler.java:836)  
        at android.os.Handler.dispatchMessage(Handler.java:103)  
        at android.os.Looper.loop(Looper.java:208)  
        at android.app.ActivityThread.main(ActivityThread.java:6267)  
        at java.lang.reflect.Method.invoke(Native Method)  
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)  
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)  
       Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference 
        at com.example.mangan.AddSampleActivity.addData(AddSampleActivity.java:30) 
        at java.lang.reflect.Method.invoke(Native Method)  
        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)  
        at android.view.View.performClick(View.java:5675)  
        at android.view.View$PerformClick.run(View.java:22651)  
        at android.os.Handler.handleCallback(Handler.java:836)  
        at android.os.Handler.dispatchMessage(Handler.java:103)  
        at android.os.Looper.loop(Looper.java:208)  
        at android.app.ActivityThread.main(ActivityThread.java:6267)  
        at java.lang.reflect.Method.invoke(Native Method)  
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)  
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)  

Es scheint, dass einige Inhalte auf addData Methode das Problem ist. Ich lese eine andere Frage, Getting IllegalStateException on button click, aber das Problem ist ein bisschen anders ..

+0

'Verursacht durch: java.lang.NullPointerException: Der Versuch, virtuelle Methode 'android.text.Editable android.widget.EditText.getText()' auf ein Null-Objekt reference' dieser Zeile von Log aufrufen sagt dir, wo das Problem ist. Und du hast deinen EditText mit seinem Hinweis verbunden, stattdessen musst du 'id' verwenden. Zum Beispiel: 'editJarak = (EditText) findViewById (R.id. Jarak_editText);' Und nach dem Löschen dieser Frage wird es abiovus als doppelt markiert werden und Sie werden downvotes bekommen. – Yupi

+0

Ihr Problem war in Ihrem Protokoll. verursacht durch: java.lang.NullPointerException: Versuch, die virtuelle Methode 'android.text.Editable android.widget.EditText.getText()' für eine Nullobjekt-Referenz aufzurufen Sie sollten nicht davon ausgehen, dass EditText einen Wert hat. Ändern Verwendung boolean isInserted = myDb.insertData (editNama.getText(). ToString(), editJarak.getText(). ToString(), editRating.getText(). ToString(), editHarga.getText(). toString()); zu – Sam

+0

Zeichenfolge nama = editNama.getText() == null? "": editNama.getText(). toString(); Zeichenfolge jarak = editJarak.getText() == null? "": editJarak.getText(). toString(); Zeichenfolge rating = editRating.getText() == null? "": editRating.getText(). toString(); Zeichenfolge harga = editHarga.getText() == null? "": editHarga.getText(). toString(); boolean isInserted = myDb.insertData (nama, jarak, rating, harga); – Sam

Antwort

1

Ihre Edittext-IDs sind nicht korrekt. Ändern Sie sie wie folgt:

editJarak = (EditText) findViewById(R.id.jarak_editText); 
editRating = (EditText) findViewById(R.id.rating_editText); 
editHarga = (EditText) findViewById(R.id.harga_editText); 
0

Ihre Textbearbeitungs-IDs sind falsch. Versuchen Sie dieses,

editNama = (EditText) findViewById(R.id.nama_editText); 
    editJarak = (EditText) findViewById(R.id.jarak_editText); 
    editRating = (EditText) findViewById(R.id.rating_editText); 
    editHarga = (EditText) findViewById(R.id.harga_editText); 
Verwandte Themen