Android - 返回相对于Firebase的布尔值 [英] Android - Return boolean value relative Firebase
问题描述
public boolean checkGold(final int gold){
mRef.addListenerForSingleValueEvent(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot ){
String value = dataSnapshot.getValue(String.class);
goldparse = Integer.parseInt(value); $ b $ if(gold> goldparse){
/ *返回* /
}
}
@Override
public void onCancelled(FirebaseError firebaseError){
});
返回false;
}
我有方法在外面检查金子,但是如何在方法 onDataChange
。感谢。
Firebase数据库是异步的,它的流量超出了我们通常的正常流量。 在这篇文章中,我试图解释(仅供参考)
在这种情况下,你可以这样做,对吧?
$ p $ bo $ iWantValue = checkGold
if(iWantValue){
// do someting
} else {
//做别的事
}
...
public boolean checkGold(final int gold){
... //这里的内容仍然和前面提到的一样
}
但是如果我们知道它是异步的,它应该是这样的:
$ $ $ $ $ $ $ currentGold = 0; //在这里放置黄金,以便随时随地访问
...
//无论您想要检查黄金,请输入
currentGold = 10; / /更新这个值,对吗?
checkGold();
...
public void checkGold(){
mRef.addListenerForSingleValueEvent(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot){
String value = dataSnapshot.getValue(String.class);
goldparse = Integer.parseInt(value); $ b $ if(currentGold> goldparse){
//做某事
} else {
//在这里做某事
}
}
...
});
$ / code>
或者如果你喜欢我想要的东西整洁:
public void checkGold(){
mRef.addListenerForSingleValueEvent(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot){
doSomethingOrNot(Integer.parseInt(dataSnapshot.getValue(String.class)));
}
...
});
$ b $ private void doSomethingOrNot(int goldparse){
if(currentGold> goldparse){
// do something
} else {
//在这里做点什么
code $
$ b $ p $需要时间熟悉这一点,但这是值得的。希望这有助于
public boolean checkGold(final int gold){
mRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String value = dataSnapshot.getValue(String.class);
goldparse = Integer.parseInt(value);
if (gold > goldparse){
/*Return*/
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
return false;
}
I have method to check gold in outside but how to return false in method onDataChange
. Thanks.
解决方案 Firebase Database is asyncronous, and its flow is outside the regular flow that we usually do. In this post, I tried to explain that (just for information)
And in this case, you do something like this, right?
boolean iWantValue = checkGold(10);
if (iWantValue) {
// do someting
} else {
// do something else
}
...
public boolean checkGold(final int gold) {
... // content here are still the same as mentioned in question
}
But if we know it is asyncronous, it should be like this:
int currentGold = 0; // place gold here so it can be accessed anywhere
...
// wherever you want to check gold, type this
currentGold = 10; // update this value first, right?
checkGold();
...
public void checkGold() {
mRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String value = dataSnapshot.getValue(String.class);
goldparse = Integer.parseInt(value);
if (currentGold > goldparse){
// do something
} else {
// do something here
}
}
...
});
}
Or if you are like me who want something tidy:
public void checkGold() {
mRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
doSomethingOrNot(Integer.parseInt(dataSnapshot.getValue(String.class)));
}
...
});
}
private void doSomethingOrNot(int goldparse) {
if (currentGold > goldparse){
// do something
} else {
// do something here
}
}
It needs time to be familiar with this, but it's worth it. Hope this helps
这篇关于Android - 返回相对于Firebase的布尔值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!