2016-04-13 25 views
0

Nach dem Folgen einer Youtube-Tutorial, schrieb ich einige Code, der eine Datenbank und eine Tabelle erstellen sollte.SQLite-Datenbank stürzt meine App

Wenn ich die App hochlade und auf den Magic Words Button klicke, stürzt die App ab und fährt herunter.
Die Datenbank wird auch nicht erstellt, aber ich nehme an, dies liegt daran, dass die App abstürzt.

Irgendwelche Ideen, warum es abstürzt?

Magic Words

public class Magic_Words extends AppCompatActivity { 
    MyDBHelper myDb; 
    EditText edittxt_Ring, edittxt_Locate, edittxt_Lock, edittxt_Wipe; 
    Button btn_Save; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_magic__words); 
     //myDb = new DataBaseHelper(this); 
     myDb = new MyDBHelper(this); 

     edittxt_Ring = (EditText) findViewById(R.id.txt_Ring); 
     edittxt_Locate = (EditText) findViewById(R.id.txt_Locate); 
     edittxt_Lock = (EditText) findViewById(R.id.txt_Lock); 
     edittxt_Wipe = (EditText) findViewById(R.id.txt_Wipe); 
     Add_Data(); 
    } 

    public void Add_Data() { 
     btn_Save.setOnClickListener(
       new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         boolean isInserted = myDb.insertMagicWords(edittxt_Ring.getText().toString()); 
         if (isInserted == true) 
          Toast.makeText(Magic_Words.this, "Magic Words Saved", Toast.LENGTH_LONG).show(); 
         else 
          Toast.makeText(Magic_Words.this, "Error Saveng Your Magic Words.", Toast.LENGTH_LONG).show(); 

        } 
       } 

     ); 
    } 
} 

BDHelper

//public class MyDBHandler extends SQLiteOpenHelper { 

    public class MyDBHelper extends SQLiteOpenHelper { 

    public static final String DATABASE_NAME = "TextIt.db"; 
    public static final String TABLE_NAME = "MagicWords"; 
    public static final String ColumnID = "ID"; 
    public static final String ColumnCommand = "Word"; 


    public MyDBHelper(Context context) { 
     super(context, DATABASE_NAME, null, 1); 

    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL("create table " + TABLE_NAME + " (" + ColumnCommand + "(ID INTEGER PRIMARY KEY AUTOINCREMENT," + 
       ColumnCommand + "TEXT)"); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     db.execSQL("DROP TABLE IF EXISTS" + TABLE_NAME); 
     onCreate(db); 
    } 

    public boolean insertMagicWords(String txt_Ring) { 
     SQLiteDatabase db = this.getWritableDatabase(); 
     ContentValues contentValues = new ContentValues(); 
     contentValues.put(ColumnCommand, txt_Ring); 
     long result = db.insert(TABLE_NAME,null, contentValues); 
     if (result == -1) 
      return false; 
     else 
      return true; 

    } 
} 

Stack-Trace (glaube ich)

04-13 08:56:58.967 17258-17258/? E/AndroidRuntime: FATAL EXCEPTION: main 
                Process: com.kieran.textit, PID: 17258 
                java.lang.RuntimeException: Unable to start activity ComponentInfo{com.kieran.textit/com.kieran.textit.Magic_Words}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference 
                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 
                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                 at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                 at android.os.Handler.dispatchMessage(Handler.java:102) 
                 at android.os.Looper.loop(Looper.java:148) 
                 at android.app.ActivityThread.main(ActivityThread.java:5417) 
                 at java.lang.reflect.Method.invoke(Native Method) 
                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
                Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference 
                 at com.kieran.textit.Magic_Words.Add_Data(Magic_Words.java:37) 
                 at com.kieran.textit.Magic_Words.onCreate(Magic_Words.java:33) 
                 at android.app.Activity.performCreate(Activity.java:6237) 
                 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  
                 at android.app.ActivityThread.-wrap11(ActivityThread.java)  
                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  
                 at android.os.Handler.dispatchMessage(Handler.java:102)  
                 at android.os.Looper.loop(Looper.java:148)  
                 at android.app.ActivityThread.main(ActivityThread.java:5417)  
                 at java.lang.reflect.Method.invoke(Native Method)  
                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
+0

Ca bitte posten Sie Ihre Stacktrace? –

+0

Ich denke, iv hat die richtige Sache –

+0

btn_Save ist null und Sie setzen einen onclicklistener darauf. –

Antwort

2

Es ist, weil Ihre Schaltfläche null erhält.

Fügen Sie dies auf Ihrem onCreate hinzu.

btn_Save = (Button) findViewById(R.id.yourbuttonid); 
0

Ihre erstellen Tabellenabfrage ist nicht korrekt. Sie sollten Raum zwischen Spaltennamen und den Datentyp setzen, beachten Sie auch, über Klammern Sie in Ihrer Abfrage verwenden

Syntax der Abfrage erstellen

Create table TABLE_NAME (ID Integer Primary Key Autoincrement, COLUMN_1 Text, COLUMN_2 Text) 

Nach Ihrem Fall

ersetzen

db.execSQL("create table " + TABLE_NAME + " (" + ColumnCommand + "(ID INTEGER PRIMARY KEY AUTOINCREMENT," + 
       ColumnCommand + "TEXT)"); 

W ith

db.execSQL("create table " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT," + ColumnCommand + " TEXT)"); 

Auch sollten Sie alle Ihre Widgets gleichen Einschränkungen unterworfen wie in Ihrer Frage initialisiert überprüfen oben Sie btnSave Initialisierung fehlen (verursacht diese Nullpointer nach Ihren logcat), so fügen Sie es

btnSave = (Button) findViewById(R.id.btnSave); 

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference 

Ihre logcat sagt alles

+0

Danke dafür. Immer noch die gleichen Probleme tho. Alles, was ich versuche, auf die MagicWords-Seite zu gelangen, schließt die App. –