【问题标题】:Why Toast appears more times than I need?为什么 Toast 出现的次数比我需要的多?
【发布时间】:2016-03-17 15:24:38
【问题描述】:

问题是 Toast 出现的次数与您打开 Settings 活动的次数一样多,而我每次单击 CheckBox 后只需要一次。

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

更详细的代码工作说明:

  • 我转到设置活动并选中一个框
  • Toast 出现一次
  • 我使用“后退”按钮返回上一个活动,什么也不做,再次返回“设置”活动并选中一个框。
  • Toast 出现两次
  • 我使用“后退”按钮返回上一个活动,什么也不做,再次返回“设置”活动并选中一个框。
  • Toast 出现 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();
        }
    }
    

    }

【问题讨论】:

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


    【解决方案1】:

    当您离开 Activity 时,您应该在 onPause() 方法中调用 settings.unregisterOnSharedPreferenceChangeListener()。我建议在您的onResume() callback 中调用settings.registerOnSharedPreferenceChangeListener() 而不是onCreate()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-11
      • 2022-01-16
      • 1970-01-01
      • 2014-04-20
      • 2016-01-23
      • 2019-12-17
      相关资源
      最近更新 更多