制作删除确认对话框

时间:2017-03-23 17:48:23

标签: java android sqlite dialog

我有一个简单的问题,我无法弄清楚如何修复。 我有一个管理联系人的应用程序,它可以添加,更新,保存和删除 我想要的是在单击删除按钮时出现一个“YES”和“NO”选项的确认对话框。

目前我收到错误,它不喜欢我如何尝试访问我的数据库,让它从数据库表中删除联系人。

这是我的代码:

} else if (view == findViewById(R.id.delete)) {
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setMessage("Are you sure you want to delete this contact?")
                    .setCancelable(false)
                    .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            UserSQL repo = new UserSQL(this);
                            repo.delete(_contact_Id);
                            Toast.makeText(this, "Contact Record Deleted", Toast.LENGTH_SHORT).show();
                            finish();
                        }
                    })
                    .setNegativeButton("No", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            dialog.cancel();
                        }
                    });
            AlertDialog alert = builder.create();
            alert.show();

        } else if (view == findViewById(R.id.close)){
        finish();
        }

它不喜欢的行是

UserSQL repo = new UserSQL(this);
                            repo.delete(_contact_Id);
                            Toast.makeText(this, "Contact Record Deleted", Toast.LENGTH_SHORT).show();
                            finish();

问题出在new UserSQL(this)内,它不像我调用我的数据库。只有在我尝试将其放入对话框方法时才会出现此问题。

当没有确认时,我的代码完全像这样:

else if (view == findViewById(R.id.delete)) {
            UserSQL repo = new UserSQL(this);
            repo.delete(_contact_Id);
            Toast.makeText(this, "Contact Record Deleted", Toast.LENGTH_SHORT).show();
            finish();

我很感激任何帮助,我研究了这个问题并且无法弄清楚为什么,我会喜欢一个很好的解释,也许是另一个建议,如果可能的话,以更简单的方式做到这一点。

Error Log

3 个答案:

答案 0 :(得分:0)

MainActivity.this

中使用onClick()
 public void onClick(DialogInterface dialog, int id) {
                        UserSQL repo = new UserSQL(MainActivity.this);
                        repo.delete(_contact_Id);
                        Toast.makeText(this, "Contact Record Deleted", Toast.LENGTH_SHORT).show();
                        finish();
                    }

答案 1 :(得分:0)

Lemme尝试盲目解决这个问题:

final Activity thisActivity = this;
AlertDialog.Builder builder = new AlertDialog.Builder(thisActivity);
        builder.setMessage("Are you sure you want to delete this contact?")
                .setCancelable(false)
                .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        UserSQL repo = new UserSQL(thisActivity);
                        repo.delete(_contact_Id);
                        Toast.makeText(thisActivity, "Contact Record Deleted", Toast.LENGTH_SHORT).show();
                        finish();
                    }
                })
                .setNegativeButton("No", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        dialog.cancel();
                    }
                });

答案 2 :(得分:-1)

试试这段代码:

UserSQL repo = new UserSQL(YourActivityName.this);
repo.delete(_contact_Id);
Toast.makeText(YourActivityName.this, "Contact Record Deleted", Toast.LENGTH_SHORT).show();