我希望创建一个提示框,其值应反映一个数字,并且在提示框仍然显示时应动态更改。我不想为每次值的变化创建新的提示框。值的更改应反映在现有的提示框中。如果可能的话,应该如何实现?
您可以保存通过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();
}
});
}
}
这些其他答案对我没有用。也许是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();
}