Java 在父或父上下文中找不到方法addContact(视图)
我在运行Android应用程序时遇到问题,导致以下错误: 在父或祖先上下文中找不到方法AddContact(视图) 我看不出这个问题,因为我没有写“@Override”,而且我拼写的方法名也不正确 这里涉及三个java类:Java 在父或父上下文中找不到方法addContact(视图),java,android,Java,Android,我在运行Android应用程序时遇到问题,导致以下错误: 在父或祖先上下文中找不到方法AddContact(视图) 我看不出这个问题,因为我没有写“@Override”,而且我拼写的方法名也不正确 这里涉及三个java类:UserDbHelper,UserContact,以及NewContactActivity UserDbHelper.java public class UserDbHelper extends SQLiteOpenHelper { private static fin
UserDbHelper
,UserContact
,以及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...");
}
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();
}
}
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
}
}
NewContactActivity.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...");
}
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();
}
}
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
}
}
activity\u 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>
以下是Eclipse中显示的错误:
为什么不给
按钮指定一个id,并覆盖其onClick
方法?我想知道为什么错误日志中会显示“android.support.v7.widget.AppCompatButton”。您的代码或xml中没有与AppCompat相关的内容。也许你应该查一下你的图书馆?@KNeerajLal我可以知道如何覆盖吗?它需要写额外的代码吗?