Snackbar onclick做ondismiss动作

时间:2016-04-12 13:53:04

标签: android android-activity android-snackbar

您好我的应用程序有一个扫描仪,如果代码不对应任何东西,它会显示一个小吃栏,询问用户是否要将扫描的产品添加到数据库中,只需单击小吃栏按钮,然后继续如果用户关闭LENGTH_INDEFINITE快餐栏,则进入主要活动,但是当我点击时,它也会执行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();  

2 个答案:

答案 0 :(得分:4)

点击Snackbar的操作时,系统会调用Snackbar的{​​{1}}方法(因为onDismiss()默认情况下会在点击时忽略动作),因此您的代码将首先调用Snackbar方法,然后调用onClick()方法。

答案 1 :(得分:-1)

为什么要使用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();