Gil*_*ger -1 java android firebase
我试图从Firebase数据库中获取一个特定的值,之前我做过,但现在当我尝试一些不同的东西时,它说"无法从具有void结果类型的方法返回值".
我猜我错过了一些编程规则,因为我是一名新的Java程序员.
这是我的代码:
public int getVotesForEvent(final String event_title) {
firebaseRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.child("Votes").exists()) {
for (DataSnapshot event : dataSnapshot.child("Votes").getChildren()) {
String event_title2 = event.getKey();
if (event_title2.equals(event_title)) {
int count=Integer.parseInt(event.getValue().toString());
return count;
}
}
}
else {
int count = 0 ;
return count;
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
}
Run Code Online (Sandbox Code Playgroud)
错误出现在我试图返回计数的地方.
读完注释后,这是我的代码,现在该方法不会影响声明的变量计数,它保持0:
int count=0;
public int getVotesForEvent(final String event_title) {
firebaseRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.child("Votes").exists()) {
boolean flag=false;
for (DataSnapshot event : dataSnapshot.child("Votes").getChildren()) {
String event_title2 = event.getKey();
if (event_title2.equals(event_title)) {
flag=true;
Toast.makeText(EventInfo.this, ""+Integer.parseInt(event.child("event_votes").getValue().toString()), Toast.LENGTH_SHORT).show();
count=Integer.parseInt(event.child("event_votes").getValue().toString());
}
}
if(flag!=true)
{
count=0;
}
}
else
{
count=0;
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
return count;
}
Run Code Online (Sandbox Code Playgroud)
我现在做错了什么?
在java方法中void意味着该方法不返回任何内容.
onDataChange返回类型是void,你不能返回值count.
count如果需要,请删除return语句并尝试在字段中保存值