繁体   English   中英

无法从 firebase 获取结果并显示在警告对话框中

[英]Cannot get the result from firebase and show in alert dialog

我是开发 android 应用程序的新手,现在我正在做一个项目,该项目使用barcode scanner使用Zxing库扫描条形码并从它获得的条形码编号中,它将与我在Firebase real-time database中创建的条形码编号进行比较Firebase real-time database ,检索条码编号的相关信息。

但是现在我无法在警报对话框中获取检索到的信息,并且在调试期间无法获取此代码:

reff = FirebaseDatabase.getInstance().getReference().child("Product");

显示为空。 我希望有人可以帮助我解决这个问题。 谢谢

这是代码:

 public void handleResult(final Result rawResult) {

    final String result = rawResult.getText();

    Log.e("QRCodeScanner", rawResult.getText());
    Log.e("QRCodeScanner", rawResult.getBarcodeFormat().toString());
    reff = FirebaseDatabase.getInstance().getReference().child("Product");
    reff.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(DataSnapshot data : dataSnapshot.getChildren()){
                String Barcode = data.getValue().toString();

                if (Barcode.equals(rawResult.getText())){
                    String ProductName = dataSnapshot.child("ProductName").getValue().toString();

                    AlertDialog.Builder builder = new AlertDialog.Builder(BarcodeScannerActivity.this);
                    builder.setTitle("Scan Result");
                    builder.setMessage(ProductName);
                    AlertDialog alert1 = builder.create();
                    alert1.show();
                }
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            Log.e(TAG, databaseError.getMessage());
        }
    });

下面是我的Firebase real-time database结构:

{
  "Product" : {

    "Product1" : {
      "Barcode" : 112233,
      "MemPrice" : 5,
      "Price" : 10,
      "ProductName" : "Logitech"
    },
    "Product2" : {
      "Barcode" : 123456,
      "MemPrice" : 5000,
      "Price" : 10000,
      "ProductName" : "Dell"
    },
    "Product3" : {
      "Barcode" : 778899,
      "MemPrice" : 150,
      "Price" : 300,
      "ProductName" : "BenQ"
    }
  }
}

改变这个:

String Barcode = data.getValue().toString();
if (Barcode.equals(rawResult.getText())){
String ProductName = dataSnapshot.child("ProductName").getValue().toString();
AlertDialog.Builder builder = new AlertDialog.Builder(BarcodeScannerActivity.this);
                    builder.setTitle("Scan Result");
                    builder.setMessage(ProductName);
                    AlertDialog alert1 = builder.create();
                    alert1.show();
}

进入这个:

String Barcode = data.child("Barcode").getValue(String.class);
if (Barcode.equals(rawResult.getText())){
String ProductName = data.child("ProductName").getValue(String.class);
AlertDialog.Builder builder = new AlertDialog.Builder(BarcodeScannerActivity.this);
                    builder.setTitle("Scan Result");
                    builder.setMessage(ProductName);
                    AlertDialog alert1 = builder.create();
                    alert1.show();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM