我正在执行以下操作:根据需要输入的股票数量,我生成一个EditText对话框。
例如,如果我在库存中输入数字5:
IMG:https://i.stack.imgur.com/iP4YL.jpg
我生成一个Dialog 5次,您输入详细信息,以及在我输入数据时标题会发生变化。
IMG:https://i.stack.imgur.com/rhE60.jpg
我不明白的是我希望标题出现:
我实际得到的是:
我还想在添加最终产品后展示Toast。问题是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();
}
}
}
});
答案 0 :(得分:2)
for
循环不会等待关闭对话框以创建下一个对话框,因此第二个对话框与第一个对话框重叠,第三个对话框与第二个对话框重叠,依此类推。您需要做的是在上一个对话框的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();
答案 1 :(得分:1)
如果我正确读取此信息,您想从产品1/5开始,那么请转到产品5/5,但您获得的是产品5/5,直到产品1/5,正确?
如果是这样的话,你首先获得5/5的原因是因为它是最后创建的对话框(它覆盖了以前的对话框),以及toast是因为它在循环中而创建的。即使用户没有输入任何内容,循环也会继续。