gpt4 book ai didi

java - 从 AlertDialog 中创建并显示 Toasts/Snackbars

转载 作者:行者123 更新时间:2023-12-02 01:52:58 24 4
gpt4 key购买 nike

我有一个 recyclerlistview,它使用从 AlertDialog 收集的输入进行填充,该 AlertDialog 是从 float 操作按钮生成的。当按下 AlertDialog 中的肯定按钮并且所有输入都正确格式化时,SQLite 数据库就会更新,然后在同一个监听器中创建并显示 snackbar 。

  • 如果输入格式错误,则会显示 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;
}
}

最佳答案

当将按钮放入自定义布局并使用该按钮而不是 Alert Dialog.Positive Button 时,它会起作用(= 成功退出时不会关闭烘烤 + 吃零食)。

            final AlertDialog dialog = new AlertDialog.Builder(this)
.setView(addDialogView)
.create();

addDialogView.findViewById(R.id.add_confirm).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view2) {
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());

Snackbar.make(view, String.format("Added \"%s (%s)\" to list", itemName, itemCount), Snackbar.LENGTH_LONG).show();

dialog.dismiss();
}
});
dialog.show();

关于java - 从 AlertDialog 中创建并显示 Toasts/Snackbars,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57415783/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com