0

i am very new in Android development.I am trying to create a database table in sqllite and add values to it. i use the following code

add.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android">
   <EditText
    android:id="@+id/nametxt"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10" >
    <requestFocus />
</EditText>
 <EditText
    android:id="@+id/notxt"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10" >
  </EditText>
  <Button
    android:id="@+id/addcontactBtn"
    android:layout_width="wrap_content"
    android:layout_height="40dp"
    android:onClick="addContacts"
   android:text="Add New" />
</LinearLayout>

DataBase.java

  public class DataBase extends SQLiteOpenHelper {
public static final String DETAILS = "Details";
public static final String DETAIL_ID = "_id";
public static final String DETAIL_NAME = "_name";
public static final String DETAIL_NO="_no";

private static final String DATABASE_NAME = "Details.db";
private static final int DATABASE_VERSION = 1;
// creation SQLite statement
private static final String DATABASE_CREATE = "create table " + DETAILS
        + "(" + DETAIL_ID + " integer primary key autoincrement, "
        + DETAIL_NAME +" text not null"+ DETAIL_NO + " text not null);";

public DataBase(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL(DATABASE_CREATE);

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

}

Detail.java

  public class Detail {
private int id;
private String name;
private String number;
public long getId() {return id; }
public void setId(int id) {this.id = id;}
public String getName() {return this.name;}
public void setName(String name) {this.name = name;}
public String getNumber(){return this.number;   }
public void setnumber(String number){   this.number=number; }
  }

DetailOperations.java

    public class DetailOperations {
private DataBase dbHelper;
private String[] DETAILS_TABLE_COLUMNS = { DataBase.DETAIL_ID, DataBase.DETAIL_NAME,DataBase.DETAIL_NO };
private SQLiteDatabase database;
public DetailOperations(Context context) {
    dbHelper = new DataBase(context);
}
public void open() throws SQLException {
    database = dbHelper.getWritableDatabase();  }

    public void close() {       dbHelper.close();   }

public Detail addDetail(String name,String number) {
    ContentValues values = new ContentValues();
    values.put(DataBase.DETAIL_NAME, name);
    values.put(DataBase.DETAIL_NO, number);
    long detId = database.insert(DataBase.DETAILS, null, values);
    Cursor cursor = database.query(DataBase.DETAILS,
            DETAILS_TABLE_COLUMNS, DataBase.DETAIL_ID + " = "
                    + detId, null, null, null, null);
    cursor.moveToFirst();
    Detail newdetail = parseDetail(cursor);
    cursor.close();
    return newdetail;
}
private Detail parseDetail(Cursor cursor) {
    Detail d = new Detail();
    d.setId((cursor.getInt(0)));
    d.setName(cursor.getString(1));
    d.setnumber(cursor.getString(2));
    return d;
}         }

Add.java

    public class Add extends Activity {
private DetailOperations detailDBoperation;
@Override
public void onCreate(Bundle savedInstaceState){
    super.onCreate(savedInstaceState);
    setContentView(R.layout.add);
}
   public void addDetails(View view){
    detailDBoperation=new DetailOperations(this);
    detailDBoperation.open();
    EditText name=(EditText) findViewById(R.id.nametxt);
    EditText number=(EditText) findViewById(R.id.notxt);
    detailDBoperation.addDetail(name.getText().toString(), number.getText().toString());
    name.setText("");
    number.setText("");

}}

When i press on the "Add New" button i got the error Unfortunately App has been stopped and shows the previous page. i check in DDMS it shows database table is created, but values are not added in table.

LogCat shows

09-23 04:50:17.914: E/AndroidRuntime(10574): java.lang.IllegalStateException: 
Could not find a method addContacts(View) in the activity class com.example.experiments.Add for onClick handler on view class android.widget.Button with id 'addcontactBtn'
3
  • 1
    What does your LogCat say? Commented Sep 23, 2013 at 8:47
  • Can you please past the logcat error below your code ? It should help us to find your issue. Commented Sep 23, 2013 at 8:47
  • @blackpanther:edited my question Commented Sep 23, 2013 at 8:53

3 Answers 3

2

You want to call the method addContacts (android:onClick="addContacts") and you called it addDetails(View view) in your activity.

Change public void addDetails(View view) with public void addContacts(View view)

Sign up to request clarification or add additional context in comments.

1 Comment

changed but now shows the error in log cat 09-23 04:57:34.534: E/SQLiteLog(12585): (1) near "null_no": syntax error
1

Make Sure you have included the onClick for button:

<Button
    android:id="@+id/addcontactBtn"
    android:layout_width="wrap_content"
    android:layout_height="40dp"
    android:onClick="addContacts"
   android:text="Add New" 
android:onClick="addDetails"/>

Change the query to this: missing ',' after not null in query

 private static final String DATABASE_CREATE = "create table " + DETAILS
       + "(" + DETAIL_ID + " integer primary key autoincrement, "
       + DETAIL_NAME +" text not null, "+ DETAIL_NO + " text not null);";

Comments

1

Replace the following method/method signature public void addDetails(View view) with public void addContacts(View view) as that was the method defined in your layout XML configuration file as:

<Button
    android:id="@+id/addcontactBtn"
    android:layout_width="wrap_content"
    android:layout_height="40dp"
    android:onClick="addContacts" <!-- here -->
    android:text="Add New" />

1 Comment

changed but now shows the error in log cat 09-23 04:57:34.534: E/SQLiteLog(12585): (1) near "null_no": syntax error

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.