Snackbar onclick 执行 ondismiss 操作

Snackbar onclick do ondismiss action

你好,我的应用程序有一个扫描仪,如果代码不对应任何内容,它会显示一个小吃栏,询问用户是否要通过单击小吃栏按钮将扫描的产品添加到数据库中,然后继续如果用户关闭 LENGTH_INDEFINITE 快餐栏,到主 activity,但是当我单击时,它也会执行 ondismiss 消息:

Snackbar.make(coordinatorLayoutView, "Aucun produit correspondant", Snackbar.LENGTH_INDEFINITE)  //Si il n'y a pas de produit correspondant, affiche un snackbar qui propose de l'ajouter a la base de donnée
        .setCallback(new Snackbar.Callback() {
            @Override
            public void onDismissed(Snackbar snackbar, int event) {
                Log.i("Snack", "dismiss");
                startActivity(new Intent(ScannerResultActivity.this, HomeActivity.class));
            }
        }).setAction("Ajouter", new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(ScannerResultActivity.this, ScannerResultAddProductActivity.class);
                intent.putExtra("ean", getIntent().getStringExtra("ean"));
                Log.i("Snack", "onclick");
                startActivity(intent);
                finish();
            }
        }).show();  

单击 Snackbar 的操作时,会调用 SnackbaronDismiss() 方法(因为 Snackbar 在单击其操作时默认被关闭),因此您的代码将首先调用 onClick() 方法,然后调用 onDismiss() 方法。

为什么为此使用 Snackbar 小部件? 您可以使用 AlertDialog

轻松完成此操作
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Do you want to add this to the database?")
   .setCancelable(true)
   .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
       public void onClick(DialogInterface dialog, int id) {
            //do things
       }
   });
AlertDialog alert = builder.create();
alert.show();