Кнопка Нажмите, чтобы добавить контакт. Не удается разрешить метод 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);
Другие вопросы по тегам