如何在 Toast 通知正在显示时动态更改文本?

5
我希望创建一个提示框,其值应反映一个数字,并且在提示框仍然显示时应动态更改。我不想为每次值的变化创建新的提示框。值的更改应反映在现有的提示框中。如果可能的话,应该如何实现?

你尝试过使用一些变量或其他东西吗? - Mehul Joisar
http://developer.android.com/guide/topics/ui/notifiers/toasts.html#CustomToastView - John
@MehulJoisar,我尝试过了,但是一旦显示了一个toast,即使变量的值发生了更改,其中的文本也不会更新。 - Debojeet Chatterjee
@DebojeetChatterjee:好的。看起来你需要创建一些自定义布局或自定义Toast本身。 - Mehul Joisar
2个回答

11

您可以保存通过makeText获得的Toast实例,并使用setText进行更新。

已更新

代码:

public class MainActivity extends ActionBarActivity {

    private Toast mToast;

    private int count = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        findViewById(R.id.toast).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(final View v) {
                if (mToast == null) {
                    mToast = Toast.makeText(MainActivity.this, "Count " + 0, Toast.LENGTH_LONG);
                }
                mToast.setText("Count " + count++);
                mToast.show();
            }
        });
    }   
}

似乎不起作用。每次使用setText时,Toast都会被重绘。你能提供其他的建议吗? - Debojeet Chatterjee
但是哪里出了问题?要在 Toast 中显示新文本,它应该重新绘制。 - Bracadabra
重新绘制指的是现有的提示框退出,然后弹出一个新的提示框。我希望屏幕上已经存在的提示框能够被更新。 - Debojeet Chatterjee
那么你肯定做错了什么,我提供的示例代码是可行的,现有的提示信息也会被更新。 - Bracadabra
1
显然,问题在于我在手机上使用XUIMod来调整toast的进入和退出动画。因此,每次调用show()时,它都会重新绘制带有退出和进入动画的toast。禁用这些调整后,问题得到解决。谢谢。 - Debojeet Chatterjee

0

这些其他答案对我没有用。也许是Oreo的问题。 这就是人们正在寻找的东西。应该在所有情况下都有效。

编辑:应该澄清,原始toast只会显示一段时间,只要持续时间允许。一旦toast长度完成,您不能在不重新实例化的情况下调用show()。

    private Toast mToast;
    protected void showToast(int value) {

        if (mToast == null) {
            mToast = Toast.makeText(context, "", Toast.LENGTH_SHORT);
        } else {
            mToast.cancel();
            mToast = Toast.makeText(context, "", Toast.LENGTH_SHORT);
        }

        mToast.setText("Shutdown in "+value+" seconds");
        mToast.show();
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接