【发布时间】:2019-12-16 08:28:21
【问题描述】:
我有一个 recyclerlistview,它使用从 AlertDialog 收集的输入填充,该 AlertDialog 是从浮动操作按钮产生的。当按下 AlertDialog 中的肯定按钮并且所有输入的格式都正确时,SQLite db 会得到更新,然后在同一个侦听器中制作并显示小吃栏。
- 如果输入格式错误,则会显示 toast,但我不希望的对话框也会关闭
- 如果输入正确,对话框将关闭,数据将添加到列表中,但 SnackBar 未显示
这是我的 MainActivity 中的 onClickListener:
@Override
public void onClick(View view)
{
switch ( view.getId() )
{
case R.id.add_item_btn:
View addDialogView = getLayoutInflater().inflate(R.layout.add_dialog, null);
final EditText addItemNameTxt = addDialogView.findViewById(R.id.add_item_name_txt);
final EditText addItemCountTxt = addDialogView.findViewById(R.id.add_item_count_txt);
// something unimportant left out
new AlertDialog.Builder(this)
.setView(addDialogView)
.setCancelable(true)
.setPositiveButton("Add", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int i)
{
if ( addItemNameTxt.getText().length() == 0 )
{
Toast.makeText(MainActivity.this, "Text cannot be empty", Toast.LENGTH_SHORT).show();
return;
}
String itemName = addItemNameTxt.getText().toString();
String itemCount = addItemCountTxt.getText().toString();
dbHelper.insertTask(itemName, Integer.parseInt(itemCount));
taskAdapter.swapCursor(dbHelper.getTasks());
dialog.dismiss();
Snackbar.make(getLayoutInflater().inflate(R.layout.activity_main, null).findViewById(R.id.rootLayout), String.format("Added \"%s (%s)\" to list", itemName, itemCount), Snackbar.LENGTH_LONG);
}
})
.create().show();
break;
}
}
【问题讨论】:
-
也许可以创建模仿你的对话的视图组,然后做你需要的。
标签: java android android-alertdialog android-snackbar