1

问题在于Toast出现的次数与您打开设置活动次数相同,而每次点击CheckBox后我只需要一次。为什么吐司会出现比我需要的时间更多的时间?

在此先感谢大家,他们试图改进我的代码。

的代码是如何工作的更详细的描述:

  • 我去设置活动和检查框
  • 吐司出现一次
  • 我回到以前的活动使用后退按钮,什么也不做,再次返回到设置活动并选中一个框。
  • Toast出现两次
  • 我使用“返回”按钮返回上一个活动,什么都不做,再次返回到“设置”活动并选中一个框。
  • 吐司出现三次
  • 等等

    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(); 
        } 
    } 
    

    }

回答

0

你应该叫settings.unregisterOnSharedPreferenceChangeListener()onPause()方法,当你离开的活动。我建议您在onResume() callback之内拨打settings.registerOnSharedPreferenceChangeListener(),而不是onCreate()

相关问题