0

I have a problem while running Android application which came out this error:

Could not find method AddContact(View) in a parent or ancestor context.

I can't see the problem as I didn't write "@Override" and I spell the method name correctly.

3 java classes are involved here which are: UserDbHelper, UserContact, and NewContactActivity.

UserDbHelper.java

public class UserDbHelper extends SQLiteOpenHelper
{
    private static final String DATABASE_NAME = "USERINFO.DB";
    private static final int DATABASE_VERSION = 1;
    private static final String CREATE_QUERY = 
            "CREATE TABLE "+ UserContact.NewUserInfo.TABLE_NAME+"("+UserContact.NewUserInfo.USER_NAME+" TEXT,"+
                    UserContact.NewUserInfo.USER_MOB+" TEXT," + UserContact.NewUserInfo.USER_EMAIL+" TEXT);";
    public UserDbHelper(Context context) //constructor
    {
        //superclass method constructor
        //pass three arguement - context object, database name, db version
        super(context,DATABASE_NAME,null,DATABASE_VERSION);
        Log.e("DATABASE OPERATIONS","Database created/opened...");//log message
    }

    @Override
    public void onCreate (SQLiteDatabase db)
    {
        //create table in this function
        //database created for the 1st time
        //if already exist, won't be calling this function
        db.execSQL(CREATE_QUERY);
        Log.e("DATABASE OPERATIONS","Table created...");//log message

    }

    public void addInformation(String name, String mob, String email,SQLiteDatabase db)
    {
        ContentValues contentValues = new ContentValues();
        contentValues.put(UserContact.NewUserInfo.USER_NAME, name);
        contentValues.put(UserContact.NewUserInfo.USER_MOB, mob);
        contentValues.put(UserContact.NewUserInfo.USER_EMAIL, email);
        db.insert(UserContact.NewUserInfo.TABLE_NAME, null, contentValues);
        Log.e("DATABASE OPERATIONS","One row inserted...");
    }

NewContactActivity.java

import android.app.Activity;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class NewContactActivity extends Activity
{   
    EditText ContactName, ContactMobile, ContactEmail;
    Context context =  this;
    UserDbHelper userDbHelper;
    SQLiteDatabase sqLiteDatabase;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ContactName = (EditText)findViewById(R.id.user_contact_name);
        ContactMobile = (EditText)findViewById(R.id.user_contact_no);
        ContactEmail = (EditText)findViewById(R.id.user_email_add);
    }

    public void addContact(View v)
    {
        String name = ContactName.getText().toString();
        String mob = ContactMobile.getText().toString();
        String email = ContactEmail.getText().toString();
        userDbHelper = new UserDbHelper(context);
        sqLiteDatabase = userDbHelper.getWritableDatabase();//get writing object
        userDbHelper.addInformation(name, mob, email, sqLiteDatabase);
        Toast.makeText(getBaseContext(), "Data Saved", Toast.LENGTH_LONG).show();
        userDbHelper.close();
    }

}

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.sqlitedatabaseex.MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/contact_name" 
        android:textSize="25sp"
        android:layout_marginTop="20dp"
        android:layout_marginLeft="10dp"
        />

    <EditText 
        android:id="@+id/user_contact_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="@string/contact_name_edit"
        android:textSize="20sp"
         android:layout_marginTop="10dp"
        android:layout_marginLeft="10dp"
        />

     <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/contact_no" 
        android:textSize="25sp"
         android:layout_marginTop="20dp"
        android:layout_marginLeft="10dp"
        />

     <EditText 
         android:id="@+id/user_contact_no"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="@string/contact_no_edit"
        android:textSize="20sp"
         android:layout_marginTop="10dp"
        android:layout_marginLeft="10dp"
        />

     <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/email_add" 
        android:textSize="25sp"
         android:layout_marginTop="20dp"
        android:layout_marginLeft="10dp"
        />

     <EditText 
        android:id="@+id/user_email_add"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="@string/email_add_edit"
        android:textSize="20sp"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="10dp"
        />

     <Button 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="20dp"
        android:onClick="addContact"
         />

</LinearLayout>

UserContact.java

public class UserContact {

    public static abstract class NewUserInfo
    {
        public static final String USER_NAME = "user_name"; //column name
        public static final String USER_MOB = "user_mob";
        public static final String USER_EMAIL = "user_email";
        public static final String TABLE_NAME = "user_info";//table name

    }

}

Here is the error shown in Eclipse:

Here is the error shown in Eclipse

BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555
Ashley
  • 1
  • 1
  • Why don't you assign an id to the `Button` and override its `onClick` method? – K Neeraj Lal Jan 02 '16 at 15:25
  • I'm wondering why it says "android.support.v7.widget.AppCompatButton" in the error log. There is nothing related to AppCompat in your code or your xml. Maybe you should check your libraries? – Bö macht Blau Jan 02 '16 at 18:44
  • @KNeerajLal May I know how to override? Does it need to write extra code ? – Ashley Jan 03 '16 at 02:56

0 Answers0