私はjavaとandroid studioの初心者です。私は、リストアプリケーションを行うためにコードしようとしています。これを実現するには、ユーザーのタスクをデータベースベースに格納する必要があります。onCreate()関数がコンストラクタによって呼び出されない理由
[https://www.sitepoint.com/starting-android-development-creating-todo-app/][1]
そして、もっと正確にデータベースを作成するために、次のコード:このため、私はこのチュートリアルに従う
package com.aziflaj.todolist.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class TaskDbHelper extends SQLiteOpenHelper {
public TaskDbHelper(Context context) {
super(context, TaskContract.DB_NAME, null, TaskContract.DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String createTable = "CREATE TABLE " + TaskContract.TaskEntry.TABLE + " (" +
TaskContract.TaskEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
TaskContract.TaskEntry.COL_TASK_TITLE + " TEXT NOT NULL);";
db.execSQL(createTable);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TaskContract.TaskEntry.TABLE);
onCreate(db);
}
}
を私は自主的にいずれかを削除
package com.example.steven.myapplication;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class DatabaseHandler extends SQLiteOpenHelper {
private static final String TAG = "DatabaseHandler";
private static final String DATABASE_NAME = "taskRegister";
private static final String TASK_TABLE= "task";
private static final String COLUMN_ID = "id";
private static final String COLUMN_TASK = "task";
private static final String COLUMN_STATE = "false";
public DatabaseHandler(Context context) {
super(context, "taskRegister", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
String database_table = "CREATE TABLE task (" +
"id int INTEGER PRIMARY " +
"task TEXT" +
"state TEXT)";
db.execSQL(database_table);
Log.d(TAG, "===Inside onCreate from DatabaseHandler===");
}
ように私はそれを修正あなたがあまりにも多くのコードを読まなくて済むようにするためです。 :)
私のデータベースを初期化するためにonCreate()関数がコンストラクタによって呼び出されない理由を理解するのに役立つ人はいますか?
私のような別のクラスからの私のコンストラクタを呼び出す:あなたはtest.getWritableDatabase()
を呼び出す必要があり
DatabaseHandler test = new DatabaseHandler(get.Application());
おかげ
ありがとうございました!なぜ私はonCreate()関数が公式アンドロイドスタジオのドキュメントで呼び出されていないのか探していたので、私はこの関数を見ませんでしたが、別の関数が明示的にonCreate()関数を呼び出すことはできないと考えました。ありがとう:) –