2017-03-27 3 views
-3

Ich versuche, Variable "Schlüssel" von innen die meisten Schleifenschleife zugreifen. Aber nicht in der Lage zu haben, habe ich andere Beiträge über den Zugriff auf Variablen in inneren Klassen überprüft und Methoden folgten wie deklarieren es endgültig und machen es zu einer globalen Variablen, aber keine Arbeit.Android: Zugriff auf Variable innerhalb und außerhalb der Schleife

Bitte überprüfen Sie den untenstehenden Code und schlagen Sie mir vor.

Im folgenden Code kann ich Toast-Nachricht des Benutzers Schlüssel innerhalb der Schleife sehen, Howevver Toast Nachricht außerhalb Schleife gibt leere Zeichenfolge.

private DatabaseReference mDatabaseUserDetails; 

public static String key = ""; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_account); 

    --- some code --- 

    mDatabaseUserID = DatabaseUtils.getDatabase().getReference().child("Users").child(user_id); 

    mDatabaseUserID.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

      for(DataSnapshot accountSnapshot: dataSnapshot.getChildren()){ 

       key = accountSnapshot.getKey().toString(); 
       Toast.makeText(getApplicationContext(), key, Toast.LENGTH_LONG).show(); 


      } 

     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

    Toast.makeText(getApplicationContext(), key, Toast.LENGTH_LONG).show(); 

Basically I need this key

+0

Wenn onCreate() aufgerufen wird, wird der Wert des Schlüssels nicht geändert, so dass der Toast nur die leere Zeichenfolge anzeigt. –

+0

Bitte setzen Sie Ihre Firebase-Datenbank –

+0

Eigentlich wie in der Post Toast innerhalb der Schleife angezeigt wird Wert where als Toast, der außerhalb der Schleife ist, gibt keinen Wert zurück. Hauptpunkt hier ist, würde ich Schlüsselwert abrufen. – Bala

Antwort

1

Da die Schleife noch laufen worden ist. Die Schleife befindet sich in einem Wert-Ereignis-Listener. Es wird erst später ausgeführt, wenn DatabaseReference es aufruft.

Verwandte Themen