0

私のアプリケーションでは、ユーザーが初めてアプリを開くときに、初期ユーザー設定が必要です。彼は、アプリケーションの実行方法を決定する初期設定を行うことができるはずです。このために、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 です)。

ややこしいかもしれませんが、どうすればよいでしょうか?助けてください。すべての回答をお待ちしております。ありがとう!

4

3 に答える 3

0

あなたのコードに見られる問題は、あなたのコードがmy_first_time常に true になっていることです。定義しないでください。共有設定でvarを定義しないと、2番目のパラメーターとして渡すデフォルト値が返されます。私はあなたのコードを編集します:

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 に答える