Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:App一直在预填充sqlite数据库_Java_Android_Database_Sqlite_Sharedpreferences - Fatal编程技术网

Java Android:App一直在预填充sqlite数据库

Java Android:App一直在预填充sqlite数据库,java,android,database,sqlite,sharedpreferences,Java,Android,Database,Sqlite,Sharedpreferences,我目前有一个活动,其中包含一个共享的首选项,用于判断sqlite数据库是否已预填充或是否需要填充。但是,每次创建活动时,我的应用程序都会填充 我目前有以下共享首选项的方法: public void checkDB() { SharedPreferences sharedPref = MainActivity.this .getPreferences(Context.MODE_PRIVATE); Editor editor = sha

我目前有一个活动,其中包含一个共享的首选项,用于判断sqlite数据库是否已预填充或是否需要填充。但是,每次创建活动时,我的应用程序都会填充

我目前有以下共享首选项的方法:

public void checkDB() {
        SharedPreferences sharedPref = MainActivity.this
                .getPreferences(Context.MODE_PRIVATE);
        Editor editor = sharedPref.edit();
        editor.putBoolean("CHECK", true); // Storing boolean - true/false
        editor.commit(); // commit changes
        prepopulate();

    }

    public void isChecked() {
        boolean setup = false;
        SharedPreferences sharedPref = MainActivity.this
                .getPreferences(Context.MODE_PRIVATE);
        setup = sharedPref.getBoolean("CHECK", true); // getting boolean
        if (setup = false) {
            checkDB();
        } else {

        }
以下是我在onCreate方法中如何调用它们:

super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        checkDB();
        isChecked();
        loadListView();
        registerListClickCallback();
我确信我在共享首选项方法中的一个布尔值有问题。为方便起见,以下是我的预填充数据库字段的循环:

public void prepopulate() {
        Locker setup = new Locker(this);
        for (int x = 0; x < 46; x++) {
            setup.open();
            String lockerNumber = "Locker" + x;
            setup.createLockerEntry(lockerNumber, 0);
            setup.close();
        }
    }
public void预填充(){
储物柜设置=新储物柜(此);
对于(int x=0;x<46;x++){
setup.open();
字符串lockerNumber=“Locker”+x;
setup.createLockerEntry(lockerNumber,0);
setup.close();
}
}

您正在调用
isChecked()
方法中的
checkDB()
方法,因此不需要调用它
onCreate()


您正在
isChecked()
方法中调用
checkDB()
方法,因此不需要调用它
onCreate()


您正在
isChecked()
方法中调用
checkDB()
方法,因此不需要调用它
onCreate()


您正在
isChecked()
方法中调用
checkDB()
方法,因此不需要调用它
onCreate()


为什么使用共享首选项您不需要使用此选项。如果要检查数据库是否存在,请尝试以下操作:

private static boolean doesDatabaseExist(ContextWrapper context, String dbName) {
    File dbFile=context.getDatabasePath(dbName);
    return dbFile.exists();
}

为什么使用共享首选项您不需要使用此选项。如果要检查数据库是否存在,请尝试以下操作:

private static boolean doesDatabaseExist(ContextWrapper context, String dbName) {
    File dbFile=context.getDatabasePath(dbName);
    return dbFile.exists();
}

为什么使用共享首选项您不需要使用此选项。如果要检查数据库是否存在,请尝试以下操作:

private static boolean doesDatabaseExist(ContextWrapper context, String dbName) {
    File dbFile=context.getDatabasePath(dbName);
    return dbFile.exists();
}

为什么使用共享首选项您不需要使用此选项。如果要检查数据库是否存在,请尝试以下操作:

private static boolean doesDatabaseExist(ContextWrapper context, String dbName) {
    File dbFile=context.getDatabasePath(dbName);
    return dbFile.exists();
}

重新填充的原因是您无条件地调用了@Kedamath中提到的
checkDB()


但是,请考虑使用简单的旧<代码> SqtLeLeOpenHelpE/COD>并在其<代码> OnCeCuto()/<代码>中放置任何预填充代码。当数据库文件不存在并且需要创建表和任何预填充的数据时,框架只调用该方法一次。

重新填充的原因是您无条件地调用
checkDB()
,如@Kedamath中所述


但是,请考虑使用简单的旧<代码> SqtLeLeOpenHelpE/COD>并在其<代码> OnCeCuto()/<代码>中放置任何预填充代码。当数据库文件不存在并且需要创建表和任何预填充的数据时,框架只调用该方法一次。

重新填充的原因是您无条件地调用
checkDB()
,如@Kedamath中所述


但是,请考虑使用简单的旧<代码> SqtLeLeOpenHelpE/COD>并在其<代码> OnCeCuto()/<代码>中放置任何预填充代码。当数据库文件不存在并且需要创建表和任何预填充的数据时,框架只调用该方法一次。

重新填充的原因是您无条件地调用
checkDB()
,如@Kedamath中所述


但是,请考虑使用简单的旧<代码> SqtLeLeOpenHelpE/COD>并在其<代码> OnCeCuto()/<代码>中放置任何预填充代码。当数据库文件不存在并且需要创建表和任何预填充的数据时,框架只调用该方法一次。

您有setup=sharedPref.getBoolean(“CHECK”,true);我认为默认值应该是false。如果(setup==false)或(!setup)您的setup=sharedPref.getBoolean(“CHECK”,true),也应该是;我认为默认值应该是false。如果(setup==false)或(!setup)您的setup=sharedPref.getBoolean(“CHECK”,true),也应该是;我认为默认值应该是false。如果(setup==false)或(!setup)您的setup=sharedPref.getBoolean(“CHECK”,true),也应该是;我认为默认值应该是false。也应该是if(setup==false)或if(!setup)我应该把这个放在哪个类中?我应该把这个放在哪个类中?我应该把这个放在哪个类中?我应该把这个放在哪个类中?