0

アプリを構築しているときに、最初の起動時にのみアクティビティを表示できる Java パーツを見つけました。これは機能しますが、アプリを強制終了するか、電話を再起動すると元に戻ります。誰か助けてもらえますか?

私の主な活動(Toolz.java)でこれを使用しています

 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (Prefs.firststart == false) {
            setContentView(R.layout.toolz);
        } else {
            Intent i = new Intent(this, First.class);
            startActivity(i);
            finish();
          }


    }



    @Override
    protected void onResume() {
        super.onResume();
  }

これをFirst.javaに追加しました

    Prefs.firststart=false;

Prefs.javaを作成してこれを追加しました

public class Prefs {
    public static boolean firststart = true;
}
4

4 に答える 4

2

アプリが終了したときやデバイスが再起動したときにも利用できるデータを保存するための静的変数ではなく、 SharedPreferencesを使用する必要があります。

次のチュートリアルで、SharedPreferences からのデータの保存と読み取りに SharedPreferences を使用する方法を確認できます。

共有設定

于 2013-05-16T17:25:19.697 に答える
1

アプリが再起動すると、すべてのコードが開始点から開始されます (つまりPrefs.firststart、true に設定されます)。代わりに、セッション全体で保存される永続変数を作成する必要があります。DB を使用している場合は、それを使用するか、組み込みの を使用できますSharedPreferences

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    SharedPreferences prefs = this.getPreferences(MODE_PRIVATE);
    if (prefs.contains("started")) {
        setContentView(R.layout.toolz);
    } else {
        //Add the preference:
        SharedPreferences.Editor editor = prefs.edit();
        editor.putBoolean("started",true);
        editor.apply();
        Intent i = new Intent(this, First.class);
        startActivity(i);
        finish();
      }


}
于 2013-05-16T17:38:35.850 に答える
0

このようにしてみてください

//**** First start *****

//you get the prefs for your app using a pref name 
String PREFS_NAME = "myAppPrefs";
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
//persist the boolean value in preferences using a key-value approach
editor.putBoolean("pref_app_started", true);
//commit the changes
editor.commit();

アプリを起動すると、その設定を確認します

//**** next start *****
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
//now we get the saved boolean using the key we previously uesd when setting it
//the second parameter is the default value for the flag in case it was never set
boolean wasAppStarted = settings.getBoolean("pref_app_started", false);

//これで、wasAppStarted フラグを使用して、さらに何を行うかを決定できます

于 2013-05-16T17:34:33.470 に答える