プログラムで初めて SQLite DB をセットアップするにはどうすればよいですか? これを行うためのプログラム構造は何ですか?
私が考えることができる唯一の方法は、初めてブール値を保持することです:
if (isFirstInstall) setup();
これは非常に専門的ではないようです。この種のセットアップが行われる onFirstInstall() 呼び出しはありますか?
プログラムで初めて SQLite DB をセットアップするにはどうすればよいですか? これを行うためのプログラム構造は何ですか?
私が考えることができる唯一の方法は、初めてブール値を保持することです:
if (isFirstInstall) setup();
これは非常に専門的ではないようです。この種のセットアップが行われる onFirstInstall() 呼び出しはありますか?
ブール値を SharedPreferences に格納し、アプリケーションの起動時に (初回かどうかにかかわらず) 値を確認できます。
sharedPreferencesのドキュメントを確認してください
このスレッドがお役に立てば幸いです
これを試して
private SharedPreferences mPreferences;
boolean firstTime = mPreferences.getBoolean("firstTime", true);
if (firstTime) {
SharedPreferences.Editor editor = mPreferences.edit();
editor.putBoolean("firstTime", false);
editor.commit();
showMiddleActivity();
}
このコードで試すことができます。
checkFirstLaunch(); を呼び出します。onCreate() から。
private boolean checkFirstLaunch() {
try {
PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), 0);
//int currentVersion = info.versionCode;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
int lastVersion = prefs.getInt(PreferencesActivity.KEY_HELP_VERSION_SHOWN, 0);
if (lastVersion == 0) {
isFirstLaunch = true;
} else {
isFirstLaunch = false;
}
} catch (PackageManager.NameNotFoundException e) {
Log.w(TAG, e);
}
return false;
}
ブール値の結果が得られます。
if (isFirstLaunch) {
//code
}
初めて起動するかどうかを判断する代わりに、データベースが存在するかどうかを確認し、存在しない場合は作成することができます。
public void createDataBase() throws IOException {
if ( checkIfDataBaseExist() ) {
// db exists, do nothing
} else {
// By calling this method and empty database will be created into
// the default system path of your application
this.getReadableDatabase();
try {
// Do you db copying here
} catch (IOException e) {
throw new Error("Error copying database");
}
}
}
private boolean checkIfDataBaseExist() {
File dbFile = new File(DB_PATH + DB_NAME);
return dbFile.exists();
}