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

相關問題