問題は、設定アクティビティを開くたびにトーストが表示されることですが、チェックボックスをクリックするたびにトーストが必要になるのは 1 回だけです。
私のコードを改善しようとしたすべての人に前もって感謝します。
コードの仕組みの詳細な説明:
- 設定アクティビティに移動し、チェックボックスをオンにします
- トーストが 1 回表示される
- [戻る] ボタンを使用して前のアクティビティに戻り、何もせず、もう一度 [設定] アクティビティに戻り、チェックボックスをオンにします。
- トーストが2回登場
- [戻る] ボタンを使用して前のアクティビティに戻り、何もせず、もう一度 [設定] アクティビティに戻り、チェックボックスをオンにします。
- トーストが3回登場
等々
public class PrefActivity extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.pref_screen); Context context = getApplicationContext(); SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context); settings.registerOnSharedPreferenceChangeListener(this); } public void onSharedPreferenceChanged(SharedPreferences settings, String key) { Toast mToast; mToast = Toast.makeText(this, "toast text", Toast.LENGTH_SHORT); if(key.equals("checkbox_key")){ mToast.show(); } }
}