Firebase:更新一个整数值 [英] Firebase: update an integer value
本文介绍了Firebase:更新一个整数值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
因此我正在对库存管理应用程序进行编码,因此我正在使用条形码扫描仪来扫描我的产品.我的想法是,每次扫描产品时,都需要在数据库中删除一小部分.像这样:扫描产品-> quantity = quantity-1
So im coding an inventory management app and I'm using a barcode scanner to scan my products. My idea is that every time that a product gets scanned I need to remove one quantity of it on my database. Like this: Scan product-->quantity=quantity-1
这是我的代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mFirestore = FirebaseFirestore.getInstance();
scannerView = new ZXingScannerView(this);
setContentView(scannerView);
private void updateData() {
//myresult is the item barcode
final DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference("Items").child(myresult).child("itemquantity");
mDatabase.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
long qty =(long) dataSnapshot.getValue();
mDatabase.setValue(qty - 1);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
@Override
public void onDestroy() {
super.onDestroy();
scannerView.stopCamera();
}
private void showMessageOKCancel(String message, DialogInterface.OnClickListener okListener) {
new AlertDialog.Builder(addquantityactivity.this)
.setMessage(message)
.setPositiveButton("OK", okListener)
.setNegativeButton("Cancel", null)
.create()
.show();
}
@Override
public void handleResult(Result result) {
myResult = result.getText();
Log.d("QRCodeScanner", result.getText());
Log.d("QRCodeScanner", result.getBarcodeFormat().toString());
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Scan Result");
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
updateData();
scannerView.resumeCameraPreview(addquantityactivity.this);
}
});
builder.setNeutralButton("Visit", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(myResult));
startActivity(browserIntent);
}
});
builder.setMessage(result.getText());
AlertDialog alert1 = builder.create();
alert1.show();
}
}
我在我的 handleResult
函数中调用 updateData()
.我得到的错误是:
i call updateData()
in my handleResult
function.
The error i get is :
java.lang.ClassCastException:无法将java.lang.String强制转换为java.lang.Long
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Long
推荐答案
尝试一下:
long qty = dataSnapshot.getValue(Long.class);
这篇关于Firebase:更新一个整数值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文