为什么Toast出现的次数比我需要的多?

时间:2016-03-17 15:24:39

标签: android android-toast preferencescreen android-sharedpreferences checkboxpreference

问题是,Toast会在您打开“设置”活动时出现多次,而每次点击CheckBox后我只需要一次。

提前感谢所有试图改进我的代码的人。

有关代码如何工作的更详细说明:

  • 我转到“设置”活动并选中一个框
  • Toast出现一次
  • 我使用“返回”按钮返回上一个活动,不执行任何操作,再次返回“设置”活动并选中一个框。
  • Toast出现两次
  • 我使用“返回”按钮返回上一个活动,不执行任何操作,再次返回“设置”活动并选中一个框。
  • 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();
        }
    }
    

    }

1 个答案:

答案 0 :(得分:0)

离开活动时,您应该在settings.unregisterOnSharedPreferenceChangeListener()方法中致电onPause()。我建议您在settings.registerOnSharedPreferenceChangeListener()而不是onResume() callback中致电onCreate()