gpt4 book ai didi

android - Android上多次显示同一个Toast正常吗?

转载 作者:行者123 更新时间:2023-11-29 00:07:29 28 4
gpt4 key购买 nike

我正在使用 Toast 向用户显示一些信息,因为我想立即显示最新消息,而不管之前的消息如何,我是这样做的(从旧项目中学习) :

public class MainActivity extends Activity {

private Toast mToast;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

mToast = Toast.makeText(this, "", Toast.LENGTH_SHORT);
}

private void toast(final String message) {
runOnUiThread(new Runnable() {
@Override
public void run() {
mToast.setText(message);
mToast.show();
}
});
}
}

也就是说,单个 Toast 对象被重用并多次显示,每当我需要显示一条新消息时,我只需 setTextshow 再来一次。看起来工作正常,但在我用谷歌搜索后,我发现大多数人会这样做:

    private void toast(final String message) {
runOnUiThread(new Runnable() {
@Override
public void run() {
mToast.cancel();
mToast = Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT);
mToast.show();
}
});
}

取消之前的Toast然后通过Toast.makeText制作一个新的Toast。

有什么区别吗?我应该选择哪一个?

最佳答案

您可以将当前 Toast 缓存在 Activity 的变量中,然后在显示下一个 Toast 之前取消它。这是一个例子:

toast m_currentToast;

void showToast(String text)
{
if(m_currentToast != null)
{
m_currentToast.cancel();
}
m_currentToast = Toast.makeText(this, text, Toast.LENGTH_LONG);
m_currentToast.show();

}

另一种即时更新 Toast 消息的方法:

void showToast(String text)
{
if(m_currentToast == null)
{
m_currentToast = Toast.makeText(this, text, Toast.LENGTH_LONG);
}

m_currentToast.setText(text);
m_currentToast.setDuration(Toast.LENGTH_LONG);
m_currentToast.show();
}

引用:How to immediately replace the current toast with a second one without waiting for the current one to finish?

关于android - Android上多次显示同一个Toast正常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32815407/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com