Java 在用户完成多个AlertDialogs后显示Toast

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

我正在做以下工作:根据需要输入的库存数量,生成一个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事件之后立即显示

我的代码如下:

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
的值。请检查编辑后的答案(祝酒之后)。