1

問題は、設定アクティビティを開くたびにトーストが表示されることですが、チェックボックスをクリックするたびにトーストが必要になるのは 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();
        }
    }
    

    }

4

1 に答える 1

0

アクティビティを離れるときsettings.unregisterOnSharedPreferenceChangeListener()は、メソッドを呼び出す必要があります。ではなく、あなたに連絡することをおonPause()勧めします。settings.registerOnSharedPreferenceChangeListener()onResume() callbackonCreate()

于 2016-03-17T15:27:23.487 に答える