我正在开发一个适用于数据库的应用程序,并提供在外部存储上创建备份的选项。应用程序从首选项获取备份目录,但由于在我第一次运行应用程序时没有设置,我使用默认路径,只需获取外部存储路径并在那里创建目录。
对于所有这些,我使用全局字符串值来保留备份路径。但这是我的问题 - 当我第一次运行我的应用程序时,我在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", "");
}