2017-05-24 91 views
0

我想在我的數據庫獲取單個值,但我發現它很難通過一個字符串。這裏是我的代碼:如何從onDataChange返回值?

FirebaseUser user = firebaseAuth.getCurrentUser(); 
      databaseReference = FirebaseDatabase.getInstance().getReference("USERS").child(user.getUid()).child("name"); 

      databaseReference.addValueEventListener(new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 
        String name = (String) dataSnapshot.getValue(); 
        editTextName.setText(name); 

       } 

       @Override 
       public void onCancelled(DatabaseError databaseError) { 

       } 
      }); 

      String name2 = editTextName.getText().toString().trim(); 

我怎樣才能訪問字符串名稱以外呢? 我編輯我的代碼,通過它說,

invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference 
+0

Firebase異步加載數據。最好接受並修改你的代碼來處理它。見https://stackoverflow.com/questions/33203379/setting-singleton-property-value-in-firebase-listener –

回答

0

簡短的回答將是一個成員變量,但它會爲空,直到onDataChange方法實際上賦予它(這可能是永遠,如果你沒有網絡連接)

如果你需要的價值?在TextView中?只需直接從onDataChange

編輯的TextView需要更復雜的東西,請從onDataChange一個單獨的方法,並通過在您的參數。

不要強迫自己回到同步代碼中

+0

我想將它保存爲一個字符串,並在活動 – DarknessNight

+0

中的錯誤的其他部分使用它你問題表明您從未分配過EditText。我建議你修改它 –