2017-02-14 43 views
-2

當我運行我的應用程序工作正常,但是當我點擊按鈕停止,並保持回採 這裏是我的代碼,設置活動:Android的錯誤,無法對Android的執行方法:的onClick

package sayed.mohamed.apps.sebha; 

import android.net.Uri; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ListView; 
import android.widget.TextView; 

import com.google.android.gms.appindexing.Action; 
import com.google.android.gms.appindexing.AppIndex; 
import com.google.android.gms.appindexing.Thing; 
import com.google.android.gms.common.api.GoogleApiClient; 

import java.util.ArrayList; 

public class Settings extends AppCompatActivity { 

    /** 
    * ATTENTION: This was auto-generated to implement the App Indexing API. 
    * See https://g.co/AppIndexing/AndroidStudio for more information. 
    */ 
    private GoogleApiClient client; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_settings); 
     // ATTENTION: This was auto-generated to implement the App Indexing API. 
     // See https://g.co/AppIndexing/AndroidStudio for more information. 
     client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build(); 
    } 

    public void btn_save(View view) { 
     EditText txtname = (EditText) findViewById(R.id.editText); 
     /*TextView all_count=(TextView)findViewById(R.id.all_count); 
     TextView current_count=(TextView)findViewById(R.id.current);*/ 
     ListView ls = (ListView) findViewById(R.id.delete_list); 
     /*ListView ls2 = (ListView) findViewById(R.id.patterns_list);*/ 
     DBConnections db = new DBConnections(this); 
     db.InsertRowAdmin(txtname.getText().toString()); 

     ArrayList<String> array_list = db.getAllrecord(); 
     ls.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, array_list)); 
     /*ls2.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, array_list));*/ 
    } 
} 

這裏是我的xml文件:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_settings" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="sayed.mohamed.apps.sebha.Settings" 
    android:background="@drawable/gradient" 
    android:orientation="vertical" 
    android:duplicateParentState="false" 
    android:focusable="false" 
    android:hapticFeedbackEnabled="false" 
    android:isScrollContainer="false" 
    android:keepScreenOn="false" 
    android:clipToPadding="false" 
    android:clipChildren="false"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:layout_alignWithParentIfMissing="false" 
     android:id="@+id/add_layout"> 

     <TextView 
      android:text="@string/add_above" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/textView2" 
      android:layout_weight="0.09" 
      android:layout_gravity="center" 
      android:layout_marginTop="10dp" 
      android:textColor="@color/White"/> 

     <EditText 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:ems="10" 
      android:id="@+id/editText" 
      android:layout_weight="0.09" 
      android:inputType="text" 
      android:hint="@string/add_hint" 
      android:textColorHint="@color/colorPrimaryDark" 
      android:layout_marginTop="20dp" 
      android:textColor="@color/White"/> 

     <Button 
      android:text="@string/add_btn" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/add_Button" 
      android:layout_weight="0" 
      android:paddingTop="0dp" 
      android:layout_marginTop="20dp" 
      android:layout_gravity="center" 
      android:layout_margin="20dp" 
      android:onClick="btn_save" /> 
    </LinearLayout> 

    <RelativeLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/delete_layout" 
     android:layout_below="@+id/add_layout" 
     android:layout_marginTop="50dp"> 

     <ListView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:paddingBottom="150dp" 
      android:id="@+id/delete_list" 
      android:textDirection="rtl"/> 

     <Button 
      android:text="@string/zero" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/zero_Button" 
      android:layout_alignBottom="@+id/delete_list" 
      android:layout_gravity="left" /> 

     <Button 
      android:text="@string/delete_btn" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/delete_Button" 
      android:layout_marginTop="20dp" 
      android:layout_gravity="end" 
      android:layout_alignRight="@+id/delete_list" 
      android:layout_alignBottom="@+id/delete_list" /> 

    </RelativeLayout> 

</RelativeLayout> 

,這裏是出現在DEBUG錯誤:

E/AndroidRuntime: FATAL EXCEPTION: main 
        Process: sayed.mohamed.apps.sebha, PID: 2623 
        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:5610) 
         at android.view.View$PerformClick.run(View.java:22265) 
         at android.os.Handler.handleCallback(Handler.java:751) 
         at android.os.Handler.dispatchMessage(Handler.java:95) 
         at android.os.Looper.loop(Looper.java:154) 
         at android.app.ActivityThread.main(ActivityThread.java:6077) 
         at java.lang.reflect.Method.invoke(Native Method) 
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 
        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:5610)  
         at android.view.View$PerformClick.run(View.java:22265)  
         at android.os.Handler.handleCallback(Handler.java:751)  
         at android.os.Handler.dispatchMessage(Handler.java:95)  
         at android.os.Looper.loop(Looper.java:154)  
         at android.app.ActivityThread.main(ActivityThread.java:6077)  
         at java.lang.reflect.Method.invoke(Native Method)  
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)  
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)  
        Caused by: android.database.sqlite.SQLiteException: near "all": syntax error (code 1): , while compiling: create table IF NOT EXISTS Patterns (ID INTEGER primary key,name TEXT,current INTEGER,all INTEGER) 
         at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
         at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889) 
         at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500) 
         at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 
         at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 
         at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31) 
         at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1677) 
         at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1608) 
         at sayed.mohamed.apps.sebha.DBConnections.onCreate(DBConnections.java:25) 
         at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:251) 
         at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163) 
         at sayed.mohamed.apps.sebha.DBConnections.InsertRowAdmin(DBConnections.java:36) 
         at sayed.mohamed.apps.sebha.Settings.btn_save(Settings.java:44) 
         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:5610)  
         at android.view.View$PerformClick.run(View.java:22265)  
         at android.os.Handler.handleCallback(Handler.java:751)  
         at android.os.Handler.dispatchMessage(Handler.java:95)  
         at android.os.Looper.loop(Looper.java:154)  
         at android.app.ActivityThread.main(ActivityThread.java:6077)  
         at java.lang.reflect.Method.invoke(Native Method)  
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)  
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 

這裏是DBConnections的Java文件:

package sayed.mohamed.apps.sebha; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 

import java.util.ArrayList; 

/** 
* Created by M.Sayed on 2/14/2017. 
*/ 

public class DBConnections extends SQLiteOpenHelper { 

    public static final String name="patterns.db"; 
    public static final int Version=1; 
    public DBConnections(Context context) { 
     super(context, name, null, Version); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL("create table IF NOT EXISTS Patterns (ID INTEGER primary key,name TEXT,current INTEGER,all INTEGER)"); 

    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     db.execSQL("Drop table if EXISTS Patterns"); 
     onCreate(db); 
    } 

    public void InsertRowAdmin(String name){ 
     SQLiteDatabase db = this.getWritableDatabase(); 
     ContentValues contentValues = new ContentValues(); 

     contentValues.put("name",name); 
     /*contentValues.put("current",current); 
     contentValues.put("all",all);*/ 
     db.insert("Patterns",null, contentValues); 
    } 
    public ArrayList getAllrecord(){ 
     ArrayList array_list = new ArrayList(); 

     SQLiteDatabase db = this.getReadableDatabase(); 
     Cursor res = db.rawQuery("select * from Patterns",null); 
     res.moveToFirst(); 
     while (res.isAfterLast() == false) { 
      array_list.add(res.getColumnIndex("name")); 
      res.moveToNext(); 
     } 
     return array_list; 
    } 
} 
+1

請將Logcat的完整錯誤輸出添加到您的文章中。 –

+0

好吧我編輯了我的問題,添加了錯誤 –

+0

這是你需要看的一行:'由於:android.database.sqlite.SQLiteException:near「all」:語法錯誤(代碼1):,編譯時:create table如果不存在模式(ID INTEGER主鍵,名稱TEXT,當前INTEGER,所有INTEGER)''但是,似乎你發佈的代碼並沒有我們需要的所有必要的細節來調試它 –

回答

0

的問題是從您的SQL查詢進來DBConnections

create table IF NOT EXISTS Patterns (ID INTEGER primary key,name TEXT,current INTEGER,all INTEGER) 

all是一個reserved word in SQLite,所以我強烈建議您使用不同的名稱爲您的專欄,以避免將來的混淆。

你也可以用如下引號將其轉義:「all」

+0

非常感謝你,安德魯 –

0

這是一個與你的SQL語句創建一個錯誤。 all是SQL中的關鍵字,因此您不能將其用作這樣的字段名稱。或者使用一些不同的字段名稱或周圍的名稱添加引號,以避免錯誤

+0

是的,這是,謝謝,A.A. –

相關問題