那麼,我明白你想在你轉到下一個活動之前檢查數據庫中的值。我的建議是,
1)創建一個DatabaseReference的ArrayList,指向您的活動中的Firebase中的數據位置。
Arraylist<DatabaseReference> list = new ArrayList<>();
list.add(FirebaseDatabase.getInstance().getReference().child("my_child_node_1"):
list.add(FirebaseDatabase.getInstance().getReference().child("my_child_node_2"):
list.add(FirebaseDatabase.getInstance().getReference().child("my_child_node_3"):
2)創建接口和回調方法。
public static interface DataCallback {
static void onDataAdded(String string); //Use the necessary data type
}
3)使用接口爲您的Event偵聽器創建構造函數。
public static class DataListener implements ValueEventListener {
private DataCallback dataCallback;
public DataListener(DataCallback dataCallback) {
this.dataCallback = dataCallback;
}
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String data = snapshot.getValue(String.class);
//This is step 4
if(dataCallback!=null) {
dataCallback.onContactAdded(data);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
}
4)從聽者的值傳遞至活動內部onDataChange()監聽器
if(dataCallback!=null) {
dataCallback.onContactAdded(data);
}
5的方法,如下所示)實現在活動的界面並覆蓋其回調方法
public class MyActivity extends AppCompatActivity implements DataCallback{
private EditText edittext1;
private EditText edittext2;
private EditText edittext3;
private ArrayList<String> my_list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//do stuff...
}
@Override
public void onDataAdded(String data) {
}
}
6)實例並在活動的增加的onResume聽衆()方法
@Override
public void onResume(){
super.onResume();
DataListener listener = new DataListener(this);
list[0].addListenerForSingleValueEvent(listener);
list[1].addListenerForSingleValueEvent(listener);
list[2].addListenerForSingleValueEvent(listener);
}
7)得到的回調方法裏面的活動從火力值如下
@Override
public void onDataAdded(String data){
my_list.add(data);
}
8),你可以檢查是否值從火力比賽得到了來自EditText上得到的OnClicklistener內的數值爲你按鈕。
if (button != null) {
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(my_list.contains(edittext1.getText().toString)){
if(my_list.contains(edittext.getText().toString)){
if(my_list.contains(edittext.getText().toString)){
startActivity(new intent(MyActivity.this, NextActivity.class))
}
}
}
}
});
}
9)刪除onPause()方法中的監聽器。
@Override
public void onPause(){
super.onPause();
list[0].removeEventListener(listener);
list[1].removeEventListener(listener);
list[2].removeEventListener(listener);
}
而不是描述代碼和問題,編輯您的問題,以包括[最小代碼重現問題](http://stackoverflow.com/help/mcve)。這將大大提高獲得可回答問題的機會。 –
@FrankvanPuffelen對不起,我現在試着做些什麼 – procinct
這聽起來像你會希望這三個字段存儲在同一個節點下。然後通過一次addListenerForSingleValueEvent調用,您可以檢索包含三個字段的映射,然後進行您的比較客戶端。如果您包含代碼,我很樂意向您展示如何優雅地進行操作。 –