我在android中以对话框的形式显示了一个值数组,点击任何项目,显示特定的吐司。现在,如果我在下一刻点击此列表(阵列)上的其他项目,则在短时间(大约5秒)之后显示该特定的吐司,直到显示旧的吐司。 如果我想在列表中选择/点按其他项目后立即显示新的Toast,我该怎么办?
有人可以告诉我实现这个目的的逻辑是什么?
例如,请考虑此代码 -
String NumberOfItems[] = { "1", "2", "3" };
Activity mActivity;
int id =0;
AlertDialog.Builder builder = new AlertDialog.Builder(mActivity);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle(R.string.dialog_heading);
builder.setSingleChoiceItems(NumberOfItems, id, new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
switch(id)
{
case 0:
Toast.makeText(mActivity.getBaseContext(),"Item selected is 1",Toast.LENGTH_SHORT).show();
break;
case 1:
Toast.makeText(mActivity.getBaseContext(),"Item selected is 2",Toast.LENGTH_SHORT).show();
break;
case 2:
Toast.makeText(mActivity.getBaseContext(),"Item selected is 3",Toast.LENGTH_SHORT).show();
break;
}
}
});
AlertDialog alertDialog = builder.create();
alertDialog.show();
现在显示包含3个项目的对话框,点击第1个项目显示“项目选择为1”我很快点击下一个项目但显示“选择项目为2” 约5秒后 。 但如果我想立即显示第二项,我该怎么办?
简而言之,刷新Toast的逻辑是什么?
非常感谢任何帮助。
答案 0 :(得分:10)
您可以在活动中初始化单个Toast。然后在每次点击时更改其文字。
Toast mToast = Toast.makeText( this , "" , Toast.LENGTH_SHORT );
switch(id)
{
case 0:
mToast.setText( "Item selected is 1" );
mToast.show();
break;
case 1:
mToast.setText( "Item selected is 2" );
mToast.show();
break;
case 2:
mToast.setText( "Item selected is 3" );
mToast.show();
break;
}
}
});
我认为这对你有用。
更多info
答案 1 :(得分:2)
参考那个吐司。通常每个人都使用Toast.makeText(..)
来显示吐司而不会创建参考
Toast t = new Toast(this, "Text 1", Toast.LENGTH_LONG);
t.show();
t.cancel();
t = new Toast(this, "Text 2", Toast.LENGTH_LONG);
t.show();
t.show();
将堆叠吐司并按顺序显示它们。你必须致电cancel()
取消祝酒词。
现在它的t.cancel()
有所不同。
此代码将取消“文本1”吐司,如果它正在显示并立即显示“文本2”。
您可以根据需要使用此代码并进行适当的变更。
答案 2 :(得分:0)
我认为您希望以较低的频率显示吐司,并根据我的考虑显示此app中显示的消息。
为此您可以使用相对布局做一件事,并且在listview上放置一个带有toast的背景文本视图,并在点击的项目上应用文本值,并在其上使用show hide。