【发布时间】:2022-02-15 21:11:58
【问题描述】:
我已经实现了一个二维码扫描器,当我扫描二维码时,我会得到一个AlertDialog。我想要的是当我扫描值为 2(示例)的 QR 码时,我希望应用程序检查该值是否存在于我的 Database 中。如果是这样,我想将我的AlertDialog 中的标题设置为我的Database 中的"toolname" 值。
实际上我以前也这样做过,但由于我是新手,所以我不记得我是怎么做到的。 希望有人可以帮助我。
这是我的结构:
这是我的二维码扫描器代码:
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
IntentResult intentResult = IntentIntegrator.parseActivityResult(
requestCode, resultCode, data
);
if (intentResult.getContents() != null) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setMessage("Hello");
builder.setTitle("Here I want the name of the item in my database");
builder.show();
}
}
这是我从 firebase 读取数据的方式:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAuth = FirebaseAuth.getInstance();
databaseUsers = FirebaseDatabase.getInstance("").getReference("Ansatte");
databaseTools = FirebaseDatabase.getInstance(").getReference("Fellesverktøy");
currentUser = mAuth.getCurrentUser().getUid();
DatabaseReference hasUserStorageRef = databaseUsers.child(currentUser).child("hasusersstorage");
userloggedin = findViewById(R.id.tv_userloggedin);
bttoaddtool = findViewById(R.id.bt_addtool);
bttoollist = findViewById(R.id.bt_toollist);
btusertoollist = findViewById(R.id.bt_usertoollist);
btlogoutuser = findViewById(R.id.bt_logoutuser);
ivqrscan = findViewById(R.id.iv_qrscan);
hasUserStorageRef.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
@Override
public void onComplete(@NonNull Task<DataSnapshot> task) {
if (task.isSuccessful()) {
DataSnapshot snapshot = task.getResult();
if (snapshot.exists()) {
String hasusersstorage = snapshot.getValue(String.class);
if (hasusersstorage.equals("Nei")) {
bttoaddtool.setVisibility(View.GONE);
btusertoollist.setVisibility(View.GONE);
} else if (hasusersstorage.equals("Ja")) {
bttoaddtool.setVisibility(View.VISIBLE);
btusertoollist.setVisibility(View.VISIBLE);
}
}
} else {
Log.d("TAG", task.getException().getMessage());
}
}
});
更新代码:
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
IntentResult intentResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
Query query = databaseTools;
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle(intentResult.getContents());
String toolid = snapshot.getValue().toString();
builder.setMessage(toolid);
builder.show();
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
}
【问题讨论】:
-
您的代码中没有任何内容与您如何从实时数据库中读取数据相关。可以向我们展示您的尝试吗?
-
嗨,我从那个“活动”中添加了更多代码。我可以向您展示我一直在尝试的示例。
-
有人打电话给
.child(currentUser),但我们在您的屏幕截图中看不到它。凸轮,请您添加更详细的? -
那是因为那是一个不同的数据库,它是给
"Ansatte的。但是对于 QR 扫描仪,它是我使用的Fellesverktøy的数据库。我将在原帖中添加更多细节。 -
我添加了更多信息,我真正想在
AlertDialog中显示的是与我扫描的条形码具有相同ID的工具名称。
标签: java android firebase firebase-realtime-database google-cloud-platform