2

こんにちは、私はtoggleButtonの選択に基づいてアプリケーションを実装しました。しかし、私はそのアプリケーションを閉じて、それを再び開くと、それは "オフ"のデフォルト選択になるでしょう。 これは、toogleButton選択の状態を保存し、そのtoggleButton選択状態に基づいて何らかのアクションを実行する必要があるかどうかを、どのbudieもmwに伝えることができます。 。 。おかげさまで toogleButtonのオン/オフ選択の状態を保存するにはどうすればよいですか?

+1

使用SharedPreferencesと店舗トグルボタンの状態を保存します。詳しくはhttp://alchemiaandroid.altervista.org/sharedPreferencesTutorial.html – evilone

答えて

13

SharedPreferencesを使用します。

tg = (ToggleButton) findViewById(R.id.toggleButton1); 

tg.setOnClickListener(new OnClickListener() 
{ 
    @Override 
    public void onClick(View v) 
    { 

    if((tg.isChecked())) 
     { 
       SharedPreferences.Editor editor = preferences.edit(); 
       editor.putBoolean("tgpref", true); // value to store 
       editor.commit(); 
     } 
     else 
     { 
       SharedPreferences.Editor editor = preferences.edit(); 
       editor.putBoolean("tgpref", false); // value to store 
       editor.commit(); 
     } 
    } 
}); 

そして、これは値を取得する方法である:

SharedPreferences preferences = getPreferences(MODE_PRIVATE); 
boolean tgpref = preferences.getBoolean("tgpref", true); //default is true 
if (tgpref = true) //if (tgpref) may be enough, not sure 
{ 
    tg.setChecked(true); 
} 
else 
{ 
    tg.setChecked(false); 
} 

私はこのコードを確認しますが、ネット上のいくつかの例を見ていなかった、それは簡単です!

+0

アクティビティやアプリケーションを閉じてもう一度起動しても保存できますか? –

+0

好みの値を挿入する際にどのモードを追加する必要がありますか? –

+0

@iDroid Explorerはい、これはあなたの設定を保存する方法です。アプリケーションを終了/再起動した後、それらを保存して読み込むことができます:) – evilone

3

erdomesterのようなSharedPreferencesを使用することをおすすめしますが、コードを少し変更しました。いくつかの不必要な条件があります。

tg = (ToggleButton) findViewById(R.id.toggleButton1); 

tg.setOnClickListener(new OnClickListener() 
{ 
    @Override 
    public void onClick(View v) 
    { 
     SharedPreferences.Editor editor = preferences.edit(); 
     editor.putBoolean("tgpref", tg.isChecked()); // value to store 
     editor.commit(); 
    } 
}); 

そして、これは値を取得する方法を次のとおりです。

SharedPreferences preferences = getPreferences(MODE_PRIVATE); 
boolean tgpref = preferences.getBoolean("tgpref", true); //default is true 

tg.setChecked(tgpref); 
+0

はい、これは同じで、より短くて透明なコードです。 – erdomester

+0

なぜ私は本当にデフォルトとして使用する必要がありますか? –

+0

あなたはそこにもfalseを入れることができます。これは、デフォルト値に設定するものです。 – evilone

3

、あなたが同じ

画面メイン

Intent intent = new Intent(this, Something.class); 
intent.putExtra(BOOLEAN_VALUE, Boolean.valueOf((tvConfigBoolean.getText().toString()))); 
      startActivity(intent); 

スクリーン何か

tgbutton設定することができます最善の方法
Bundle bundle = getIntent().getExtras(); 
tbtConfigBoolean.setChecked((bundle 
        .getBoolean(MainActivity.BOOLEAN_VALUE))); 

と終了時に状態

editor.putBoolean("BooleanKey", tbtConfigBoolean.isChecked()); 
     editor.commit(); 

幸運

関連する問題