如何更新对话框的内容
How to update the content of a Dialog
我正在尝试在用户从列表对话框中选择数量后更新对话框的内容。例如,现在用户看到我的 "add Item dialog":
并且默认数量为 1,但如果用户决定 he/she 想要更多按添加数量(中性)按钮,它会显示另一个对话框:
问题是,在用户选择一个数量后,我的代码没有按照我的意愿刷新第一个对话框的内容,它仍然显示 1。
顺便说一句,我正在使用第 3 方 library 来创建对话框
这是我的代码:
final int[] choosenQuantity = {1};
final String[] str = {""};
final MaterialDialog.Builder addItemBuilder = new MaterialDialog.Builder(this)
.title("Add Item")
.widgetColor(getResources().getColor(R.color.ColorPrimaryDark))
.inputMaxLength(30, R.color.material_blue_grey_950)
.content("Quantity: "+choosenQuantity[0]+"")
.inputType(InputType.TYPE_CLASS_TEXT)
.autoDismiss(false)
.input("add shopping item", "", new MaterialDialog.InputCallback() {
@Override
public void onInput(MaterialDialog dialog, CharSequence input) {
str[0] = input.toString();
//add it to shoppingListItems and save to sharedPreferences
if (str[0].length() != 0) {
shoppingListItems.add(str[0] + " (" + choosenQuantity[0] + ")");
saveShoppingItems();
isListEmpty();
dialog.dismiss();
} else {
Toast.makeText(MainActivity.this, "no item description!", Toast.LENGTH_LONG).show();
}
}
}).negativeText("Cancel").callback(new MaterialDialog.ButtonCallback() {
@Override
public void onNegative(MaterialDialog dialog) {
super.onNegative(dialog);
dialog.dismiss();
}
});
addItemBuilder.neutralText("Add Quantity").callback(new MaterialDialog.ButtonCallback() {
@Override
public void onNeutral(final MaterialDialog dialog) {
super.onNeutral(dialog);
MaterialDialog.Builder quantityDialogBuilder = new MaterialDialog.Builder(MainActivity.this);
quantityDialogBuilder.title("Add Quantity");
quantityDialogBuilder.items(R.array.Quantaty_array);
quantityDialogBuilder.itemsCallback(new MaterialDialog.ListCallback() {
@Override
public void onSelection(MaterialDialog dialog, View view, int which, CharSequence text) {
choosenQuantity[0] = which+1;
addItemBuilder.content("Quantity: "+choosenQuantity[0]+"");
}
}).show();
}
}).show();
在代码中,在列表选择回调中,您正在调整 MaterialDialog.Builder 而不是对话框视图。
addItemBuilder.content("Quantity: "+choosenQuantity[0]+"");
生成器只是一个构建对话框视图的工具,一旦通过对话框的 show()
方法调用显示视图,生成器内容将不会对视图产生影响。尝试通过关闭对话框并再次显示来重新显示对话框。
另一种不关闭重新显示的情况是找到显示文本的view,直接设置文本。
例如:
addItemBuilder.neutralText("Add Quantity").callback(new MaterialDialog.ButtonCallback() {
@Override
public void onNeutral(final MaterialDialog addItemDialog) {
super.onNeutral(dialog);
MaterialDialog.Builder quantityDialogBuilder = new MaterialDialog.Builder(MainActivity.this);
quantityDialogBuilder.title("Add Quantity");
quantityDialogBuilder.items(R.array.Quantaty_array);
quantityDialogBuilder.itemsCallback(new MaterialDialog.ListCallback() {
@Override
public void onSelection(MaterialDialog dialog, View view, int which, CharSequence text) {
choosenQuantity[0] = which+1;
TextView titleView = (TextView)addItemDialog.findViewById(R.id.dialog_title); // I assume the id as dialog_title
titleView.setText("Quantity: "+choosenQuantity[0]);
}
}).show();
}
}).show();
我正在尝试在用户从列表对话框中选择数量后更新对话框的内容。例如,现在用户看到我的 "add Item dialog":
并且默认数量为 1,但如果用户决定 he/she 想要更多按添加数量(中性)按钮,它会显示另一个对话框:
final int[] choosenQuantity = {1};
final String[] str = {""};
final MaterialDialog.Builder addItemBuilder = new MaterialDialog.Builder(this)
.title("Add Item")
.widgetColor(getResources().getColor(R.color.ColorPrimaryDark))
.inputMaxLength(30, R.color.material_blue_grey_950)
.content("Quantity: "+choosenQuantity[0]+"")
.inputType(InputType.TYPE_CLASS_TEXT)
.autoDismiss(false)
.input("add shopping item", "", new MaterialDialog.InputCallback() {
@Override
public void onInput(MaterialDialog dialog, CharSequence input) {
str[0] = input.toString();
//add it to shoppingListItems and save to sharedPreferences
if (str[0].length() != 0) {
shoppingListItems.add(str[0] + " (" + choosenQuantity[0] + ")");
saveShoppingItems();
isListEmpty();
dialog.dismiss();
} else {
Toast.makeText(MainActivity.this, "no item description!", Toast.LENGTH_LONG).show();
}
}
}).negativeText("Cancel").callback(new MaterialDialog.ButtonCallback() {
@Override
public void onNegative(MaterialDialog dialog) {
super.onNegative(dialog);
dialog.dismiss();
}
});
addItemBuilder.neutralText("Add Quantity").callback(new MaterialDialog.ButtonCallback() {
@Override
public void onNeutral(final MaterialDialog dialog) {
super.onNeutral(dialog);
MaterialDialog.Builder quantityDialogBuilder = new MaterialDialog.Builder(MainActivity.this);
quantityDialogBuilder.title("Add Quantity");
quantityDialogBuilder.items(R.array.Quantaty_array);
quantityDialogBuilder.itemsCallback(new MaterialDialog.ListCallback() {
@Override
public void onSelection(MaterialDialog dialog, View view, int which, CharSequence text) {
choosenQuantity[0] = which+1;
addItemBuilder.content("Quantity: "+choosenQuantity[0]+"");
}
}).show();
}
}).show();
在代码中,在列表选择回调中,您正在调整 MaterialDialog.Builder 而不是对话框视图。
addItemBuilder.content("Quantity: "+choosenQuantity[0]+"");
生成器只是一个构建对话框视图的工具,一旦通过对话框的 show()
方法调用显示视图,生成器内容将不会对视图产生影响。尝试通过关闭对话框并再次显示来重新显示对话框。
另一种不关闭重新显示的情况是找到显示文本的view,直接设置文本。
例如:
addItemBuilder.neutralText("Add Quantity").callback(new MaterialDialog.ButtonCallback() {
@Override
public void onNeutral(final MaterialDialog addItemDialog) {
super.onNeutral(dialog);
MaterialDialog.Builder quantityDialogBuilder = new MaterialDialog.Builder(MainActivity.this);
quantityDialogBuilder.title("Add Quantity");
quantityDialogBuilder.items(R.array.Quantaty_array);
quantityDialogBuilder.itemsCallback(new MaterialDialog.ListCallback() {
@Override
public void onSelection(MaterialDialog dialog, View view, int which, CharSequence text) {
choosenQuantity[0] = which+1;
TextView titleView = (TextView)addItemDialog.findViewById(R.id.dialog_title); // I assume the id as dialog_title
titleView.setText("Quantity: "+choosenQuantity[0]);
}
}).show();
}
}).show();