我的应用程序需要初始用户设置,这是用户第一次打开应用程序。他应该能够进行一些初始设置,以确定应用程序的运行方式。为此,我使用sharedPreferences。我正在做的很简单,根据布尔值是'true'还是false'来设置contentView。但我的问题是关于setContentView()之后会发生什么。
//Variables
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
//creating sharedpref file
PREFS_NAME = "MyPrefsFile";
shPref = getSharedPreferences(PREFS_NAME, 0);
shPref.edit().putBoolean("my_first_time", true).commit();
//checking if app's being launched for first time
if(shPref.getBoolean("my_first_time", true)) {
setContentView(R.layout.page_one);
//setting the shPref as false
shPref.edit().putBoolean("my_first_time", false).commit();
}
//checking if app has been launched before
else if(shPref.getBoolean("my_first_time", false) && shprefchecker == 1) {
setContentView(R.layout.home_page);
}
}
所以我想做的是等待用户完成设置,然后才能将shPref设置为false。我猜测一旦布局在这行“setContentView(R.layout.page_one);”中改变,它将自动将shPref设置为false。我希望应用程序在用户完成初始设置之前不做任何事情(初始设置中的第一个布局是page_one.xml)。
我可能听起来很混乱,但我该怎么办呢?请帮忙。所有答案都表示赞赏。谢谢!
答案 0 :(得分:0)
我认为这很直接。
您可以在初始设置的“提交”按钮单击时将布尔值设置为false。
设置页面必须有任何按钮,对吧?因此,将确保用户首先完成设置。
在您的第二项活动中,您必须使用:
shPref = getSharedPreferences(PREFS_NAME, MODE_WORLD_READABLE);
SharedPreferences.Editor pref_editor = shPref.edit();
pref_editor.putBoolean("first_time", false);
pref_editor.commit();
答案 1 :(得分:0)
我在代码中看到的问题是,您的代码始终是my_first_time
为true。只是不定义它,如果你没有在你的共享pref中定义var它将返回你传递的默认值作为第二个参数。我会编辑你的代码:
Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
//creating sharedpref file
PREFS_NAME = "MyPrefsFile";
shPref = getSharedPreferences(PREFS_NAME, 0);
//checking if app's being launched for first time
if(shPref.getBoolean("my_first_time", true)) { //my first time not defined, it will be true
setContentView(R.layout.page_one);
//setting the shPref as false
shPref.edit().putBoolean("my_first_time", false).commit(); //This line should go in your page_one activity when it ends, but when defined it will always go to home_page
}
//checking if app has been launched before
else if(shPref.getBoolean("my_first_time", false) && shprefchecker == 1) {
setContentView(R.layout.home_page);
}
}
希望有所帮助:)
答案 2 :(得分:0)
首先非常简单您必须检查获取共享首选项键值对是否用户已通过设置过程如果没有那么您可以启动设置活动,如果是,则可以跳过设置活动