点击后需要立即显示Toast

时间:2016-03-21 18:00:49

标签: android preferenceactivity android-toast

我看到了这样的相关帖子 - Disable the Asynchronous display of a Toast [duplicate],我从那里尝试了cancel()方法,但他们没有解决我的问题。也许是因为某些差异与偏好活动有关。

请帮助我改进我的代码,以便点击后立即显示Toast。

0

1 个答案:

答案 0 :(得分:0)

你的问题措辞不多,但我认为(在阅读你的代码之后)当你检查/取消选中一个新框并希望立即显示一个新的Toast时,你问的是如何取消当前显示的Toast情况下。

问题在于您取消了刚刚创建的Toast,而不是之前创建的Toast。

尝试将Toast存储在成员变量中并取而代之。类似的东西:

private Toast mCurrerntToast = null;

@Override
public void onCreate(Bundle savedInstanceState) {
    //...
}

public void onSharedPreferenceChanged(SharedPreferences settings, String key) {
    if(key.equals("checkbox_key")){
        //If there is a previous toast displayed, cancel it
        if(mCurrentToast != null){
            mCurrentToast.cancel();
        }

        //Display a new, more current Toast message
        mCurrentToast = Toast.makeText(this, "toast text", Toast.LENGTH_LONG);
        mCurrentToast.show();
    }
}

让我知道,如果我对你所询问的内容的假设是错误的,我会尝试提供更多帮助,但我很确定这是你要解决的问题。