0

我的应用程序需要初始用户设置,这是用户第一次打开应用程序。他应该能够进行一些初始设置,以确定应用程序的运行方式。为此,我使用了 sharedPreferences。我所做的很简单,根据布尔值是“真”还是“假”来设置 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)。

我可能听起来很困惑,但我该怎么做呢?请帮忙。感谢所有答案。谢谢!

4

3 回答 3

0

我认为这很直接。

您可以在初始设置的提交按钮单击时将布尔值设置为 false。

设置页面必须有任何按钮,对吧?因此将确保用户首先完成设置。

在您的第二个活动中,您将不得不使用:

shPref = getSharedPreferences(PREFS_NAME, MODE_WORLD_READABLE);
SharedPreferences.Editor pref_editor = shPref.edit();
pref_editor.putBoolean("first_time", false);
pref_editor.commit();
于 2013-06-27T07:10:33.100 回答
0

我在您的代码中看到的问题是您的代码my_first_time始终为真。只是不要定义它,如果您没有在共享首选项中定义 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);
   }
}

希望能帮助到你 :)

于 2013-06-27T07:15:19.787 回答
0

首先非常简单您必须检查获取共享首选项键值对用户是否已通过设置过程如果没有然后您可以开始设置活动,如果是,您可以跳过设置活动

于 2013-06-27T07:38:17.003 回答