【发布时间】:2015-09-28 03:47:22
【问题描述】:
我正在使用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 对象被重复使用并多次显示,每当我需要显示新消息时,我只需再次setText 和show 即可。看起来效果不错,但是在谷歌上搜索了一下,发现大部分人都会这样做:
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();
}
});
}
其中cancel 之前的Toast 然后由Toast.makeText 制作一个新的。
有什么不同吗?我应该更喜欢哪一个?
【问题讨论】:
-
一般来说,在展示新的祝酒之前最好取消祝酒。原因是如果您在短时间内显示多个 toast,如果他们看到的 toast 与他们刚刚执行的操作无关,这可能会让用户感到困惑
-
是的,但是这两种方法对用户来说是一样的。
-
是的,但是如果您需要立即显示敬酒,最好取消敬酒。如果您使用的是 LENGTH_LONG 吐司,问题就更大了
-
你应该更喜欢哪一个绝对只取决于你想要什么。你要不要把吐司堆起来?
标签: android android-toast