如何使用firebase数据库实时更新android应用程序中的按钮点击事件
我是android和firebase开发的新手。我一直在努力在firebase中编写我的应用程序的按钮,现在我想检索它们,使他与数据库相关。我的java代码有点弱。我的想法是:当我从数据库中更改按钮值时,它们应该在app phone上更新 这段代码写在数据库“手动按钮的状态(它是一个开关)”中,我想让他阅读并根据数据库更改他的状态:如何使用firebase数据库实时更新android应用程序中的按钮点击事件,android,firebase,firebase-realtime-database,iot,android-button,Android,Firebase,Firebase Realtime Database,Iot,Android Button,我是android和firebase开发的新手。我一直在努力在firebase中编写我的应用程序的按钮,现在我想检索它们,使他与数据库相关。我的java代码有点弱。我的想法是:当我从数据库中更改按钮值时,它们应该在app phone上更新 这段代码写在数据库“手动按钮的状态(它是一个开关)”中,我想让他阅读并根据数据库更改他的状态: //-------------------------------------------Btn FAN --------------------------
//-------------------------------------------Btn FAN ----------------------------
dref = FirebaseDatabase.getInstance().getReference();
myRef = dref.child("onfan");
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot)
{
String fan = (String) dataSnapshot.child("onfan").getValue(String.class);
if (fan == "1") {
mFirebaseBtnFan.setTextColor(col1);
}
else {
mFirebaseBtnFan.setTextColor(col2);
}
}
@Override
public void onCancelled(DatabaseError databaseError)
{
}
});
mFirebaseBtnFan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if ((cnt % 2) == 0) {
dref.child("onfan").setValue("1");
mFirebaseBtnFan.setTextColor(col1);
cnt++;
} else {
dref.child("onfan").setValue("0");
mFirebaseBtnFan.setTextColor(col2);
cnt++;
}
}
});
要从数据库中读回该值,请执行以下操作:
dref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// This code runs when the data is read first time, and whenever it changes
String value = dataSnapshot.getValue(String.class);
// ... set the value to the UI
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.w(TAG, "loadData", databaseError.toException());
}
};
另请参阅Firebase文档。我找到的每个解决方案对我来说都很好
//-------------------------------------------Btn FAN work fine ----------------------------
dref = FirebaseDatabase.getInstance().getReference();
myRef = dref.child("onfan");
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot)
{
if(dataSnapshot.exists()) {//----------------------------i add test snapshot
String fan = dataSnapshot.getValue(String.class);
if (fan.equals("1")) { //-----------------------------i change " == " to " String.equals(String2) "
mFirebaseBtnFan.setTextColor(col1);
} else {
mFirebaseBtnFan.setTextColor(col2);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError)
{
}
});
mFirebaseBtnFan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if ((cnt % 2) == 0) {
dref.child("onfan").setValue("1");
mFirebaseBtnFan.setTextColor(col1);
cnt++;
} else {
dref.child("onfan").setValue("0");
mFirebaseBtnFan.setTextColor(col2);
cnt++;
}
}
});
但是在我的例子中,如果你想设置按钮的状态,我想应该调用
onDataChange
,我怎么做(使用开关按钮)。所以类似于mFirebaseSwitch.setChecked(value.equals(“1”))
的东西,我把注释放在我的答案中。对不起..你能解释更多吗plzI给了你你需要的确切代码。哪一部分对您不起作用?我在代码中找不到错误,尽管我按原样操作