我正在审核学生的计划,该计划在活动中有这样的代码:
Toast toast = Toast.makeText(this, "Hello", Toast.LENGTH_LONG);
toast.show();
toast.setText("Goodbye");
这显示了“Goodbye”的文字,这最初是一个惊喜。我假设发生这种情况是因为对show()的调用只是将请求显示Toast实例并在实际显示之前返回。对setText(“Goodbye”)的调用会在实例显示之前改变它。
两个问题:
答案 0 :(得分:3)
如有疑问,最好咨询来源。
Toast内部使用INotificationManager
的静态引用,并在每次调用enqueueToast
时调用Toast.show()
方法。
它围绕一个Toasts列表进行同步,以便一次只显示一个Toast - 如果调用了多个Toast.show(),则需要这个Toast.show()然后以它们的设置持续时间一个接一个地显示它们。
由于Toasts引用已入队(实际上是Toasts内部类TN),因此调用setText()
会更改已入队的Toast。