Java 在用户完成多个AlertDialogs后显示Toast
我正在做以下工作:根据需要输入的库存数量,生成一个EditText对话框 例如,如果我在库存中输入数字5: IMG: 我生成了一个对话框,您可以在其中输入详细信息,并且当我输入数据时,标题将在其中更改 IMG: 我不明白的是我希望标题如何显示:Java 在用户完成多个AlertDialogs后显示Toast,java,android,Java,Android,我正在做以下工作:根据需要输入的库存数量,生成一个EditText对话框 例如,如果我在库存中输入数字5: IMG: 我生成了一个对话框,您可以在其中输入详细信息,并且当我输入数据时,标题将在其中更改 IMG: 我不明白的是我希望标题如何显示: 产品1/5产品2/5、3/5产品、产品4/5产品5/5 我实际得到的是: 产品5/5产品4/5产品3/5,产品2/5,产品1/5 我还想在添加最终产品后敬酒。问题是,Toast会在Click事件之后立即显示 我的代码如下: btnContinua
- 产品1/5产品2/5、3/5产品、产品4/5产品5/5
- 产品5/5产品4/5产品3/5,产品2/5,产品1/5
btnContinuar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int stock = Integer.parseInt(input_layout_stock.getEditText().getText().toString());
for(int i = 1 ; i <= stock ; i++){
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
builder.setTitle("Producto " + i + "/" + stock);
//builder.setMessage("Agregar");
builder.setView(R.layout.dialog_add_product);
builder.setView(inflater.inflate(R.layout.dialog_add_product, null));
builder.setPositiveButton("Continuar", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.show();
builder.create();
if(i == 5){
Toast.makeText(getActivity(), "Se agregaron " + stock + " productos con éxito.", Toast.LENGTH_SHORT).show();
}
}
}
});
btnConcontinuar.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
int stock=Integer.parseInt(input_layout_stock.getEditText().getText().toString());
对于(int i=1;i如果我读对了,你想从产品1/5开始,然后转到产品5/5,但你得到的是产品5/5到产品1/5,对吗
如果是这种情况,那么您首先得到5/5的原因是因为这是创建的最后一个对话框(它涵盖了以前的对话框),而toast是因为它在循环中而创建的。即使用户没有输入任何内容,循环也会继续运行。for
循环不会等待对话框被取消以创建下一个对话框,因此第二个对话框与第一个对话框重叠,第三个对话框与第二个对话框重叠,依此类推。您需要做的是显示每个对话框n上一个对话框的onDismiss
回调
我简化了代码以用作示例。您可以将其余代码添加回需要的位置
private int current = 1; // Global variable
final int stock = Integer.parseInt("5");
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Producto " + current + "/" + stock);
builder.setPositiveButton("Continuar", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
if (current < stock) {
current++;
// TODO Create your next dialog here.
builder.setTitle("Producto " + current + "/" + stock);
builder.show();
} else {
// This was the last dialog. Show Toast.
Toast.makeText(getActivity(), "Se agregaron " + stock + " productos con éxito.", Toast.LENGTH_SHORT).show();
current = 1;
}
}
});
builder.show();
private int current=1;//全局变量
最终整数库存=整数.parseInt(“5”);
final AlertDialog.Builder=新建AlertDialog.Builder(此);
builder.setTitle(“产品”+当前+“/”+库存);
setPositiveButton(“Continuar”,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
dialog.cancel();
}
});
builder.setOnDismissListener(新的DialogInterface.OnDismissListener(){
@凌驾
公共void onDismiss(对话框接口对话框){
if(当前<库存){
电流++;
//TODO在此处创建下一个对话框。
builder.setTitle(“产品”+当前+“/”+库存);
builder.show();
}否则{
//这是最后一个对话。请举杯。
Toast.makeText(getActivity(),“Se agregaron”+stock+“productos conéxito.”,Toast.LENGTH_SHORT).show();
电流=1;
}
}
});
builder.show();
非常感谢!这很有效,但当我在库存中输入新值时,对话框将继续计数,而不是从1开始。例如,如果我在库存中先输入“5”,然后输入“10”。连续对话框将从5到10。您必须在else子句中重置current
的值。请检查编辑后的答案(祝酒之后)。