变量未在首选项中设置之前声明

时间:2015-04-01 18:27:22

标签: android global-variables sharedpreferences

我正在开发一个适用于数据库的应用程序,并提供在外部存储上创建备份的选项。应用程序从首选项获取备份目录,但由于在我第一次运行应用程序时没有设置,我使用默认路径,只需获取外部存储路径并在那里创建目录。

对于所有这些,我使用全局字符串值来保留备份路径。但这是我的问题 - 当我第一次运行我的应用程序时,我在onCreate()方法中声明了默认路径。当我尝试将此路径写入日志时,它可以正常工作。但后来我有了onClick()方法,在那里我听到点击按钮,该按钮调用带有导出/导入选项的对话框。当我尝试从此处写入备份路径以进行记录时,该字符串为空。

变量本身不应该是问题,因为这是有趣的事情 - 当我转到首选项并从那里设置备份路径(然后以与以前相同的方式保存到字符串变量),我可以突然从onClick方法获取变量,一切正常。

仅仅是为了记录,我尝试设置不同的路径,我一直在偏好中选择相同的路径,就像我在onCreate方法中手动使用的那样。

任何想法可能是什么问题?我可以将onCreate中使用的备份路径的整个条件写入onClick方法,这可能会解决这个问题,但我想避免重复代码,这也是我的烦恼。

修改

以下是我在onCreate方法中使用的条件的代码。

location = PreferenceManager.getDefaultSharedPreferences(this);
if(location.getString("backup_location", "").equals("")) {
    String state = Environment.getExternalStorageState();

    if(Environment.MEDIA_MOUNTED.equals(state)) {
        File file = new File(Environment.getExternalStorageDirectory().toString() + "/simpledbmanager_backup");

        if(!file.exists()) {
            file.mkdirs();
        }

        this.backup = file.getAbsolutePath().toString();
    }
}
else {
    this.backup = location.getString("backup_location", "");
}

0 个答案:

没有答案