Кнопка Нажмите, чтобы добавить контакт. Не удается разрешить метод addViewById(int).
Я работаю над программой, которая реализует базу данных, чтобы я мог добавить контакты (номер телефона контактов). Кажется, я застреваю на ранней стадии с сообщением об ошибке "Не удается разрешить метод addViewById(int)"
До этого я написал 5 других программ и уже много раз использовал addViewById с нажатиями кнопок и т. Д. Не уверен, что мне здесь не хватает (но я уверен, что это будет очевидно после того, как кто-то укажет на это)
Вот мой код:
Java: пакет cornez.com.databaseassignment;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
public class MainActivity extends SQLiteOpenHelper {
/*public class EmergencyDbOpenHelper extends SQLiteOpenHelper
{
/**
* Construct a SQLiteOpenHelper object for the
* emergency database.
*/
Button addNumber;
public MainActivity(Context context)
{
super(context, EmergencyDbContract.DB_NAME, null,
EmergencyDbContract.DB_VERSION);
}
public void onCreate(SQLiteDatabase db)
{
String createSql =
"create table " + EmergencyDbContract.TABLE_NAME
+ "("
+ " _id integer primary key,"
+ " name text not null,"
+ " phone_num text not null"
+ ")";
db.execSQL(createSql);
addNumber = (Button) this.findViewById(R.id.addNumberBtn);
insertContacts(db);
}
Мы видим назначение addNumber выше ^^
Вот остальная часть кода Java:
@Override
public void onUpgrade(SQLiteDatabase db,
int oldVersion, int newVersion)
{
// This is version 1 so no actions are required.
// Possible actions include dropping/recreating
// tables, saving/restoring data in tables, etc.
}
private void insertContacts(SQLiteDatabase db)
{
// perform inserts to initialize the database
/*String tableName = "emergency_contacts";
ContentValues values = new ContentValues();
values.put("name", "OSS Surf Report");
values.put("phone_num", "8436330268");
db.insert(tableName, null, values); */
String insertSql =
"insert into emergency_contacts"
+ " (name, phone_num) values"
+ " (\"OSS Surf Report\", \"8436330268\")";
db.execSQL(insertSql);
}
}
public final class EmergencyDbContract
{
public static final String DB_NAME = "emergency.db";
public static final int DB_VERSION = 1;
public static final String TABLE_NAME = "emergency_contacts";
public static final String[] COLUMNS
= { "_id", "name", "phone_num" };
public static final String AUTHORITY
= "edu.citadel.android.emergency";
public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" + TABLE_NAME);
private EmergencyDbContract() {} // prevent instantiation
}
XML для кнопки помечен как:
android:id="@+id/addNumberBtn" />
2 ответа
Может быть, вам не нужна эта кнопка для вставки сообщения, вы можете создать класс MyHelper, расширяетSQLiteOpenHelper, кнопка и функция вставки должны находиться вMainActivity, см. здесь
SQLiteOpenHelper
не Activity
это не имеет findViewById()
метод. Вы можете ошибаться.
addNumber = (Button) this.findViewById(R.id.addNumberBtn);