2016-06-30 6 views
0

FirebaseとAndroidにいくつかの問題があります。関数の出力を後で使用したい変数に保存したいのですが、関数の正しいパラメータを与える方法がわかりません。FirebaseとAndroidの関数出力を変数に保存

public void getBasicData(DataSnapshot dataSnapshot textViewDataGet) { 

    textViewDataGet = dataSnapshot.child("Users").getValue(); 
} 

上記の関数では、すでにtextViewDataGetという文字列を宣言しており、ライブラリはすべて正しくインポートされています。私はデータベースへの基本的な書き込み機能を実装しようとしました。しかし、AndroidStudioは文字列を扱いたくない。しかし、変数を削除してそれを残すと、エラーは表示されません。前もって感謝します!

マイケル

答えて

2

あなたが最初のgetInstance使用してインスタンスを作成して、データベースのデータにアクセスするために使用するデータ参照を宣言する必要があります。

FirebaseDatabase dbDay = FirebaseDatabase.getInstance(); 
final DatabaseReference day = dbDay.getReference("Day"); 

これは、私はあなたができるように、それはStringを返すように、データが

day.addValueEventListener(new ValueEventListener() { 
@Override 
public void onDataChange(DataSnapshot dataSnapshot) { 
int value = dataSnapshot.getValue(int.class); 
textViewDataGet = value; 

} 

@Override 
public void onCancelled(DatabaseError databaseError) { 

} 
}); 
0

代わりのメソッドの戻り値の空間を作るに変更されたときにチェックすることによって、それを行う方法を見つけることができる唯一の方法でした後で使用するために保管してください。これは、Javaが厳密に値渡しであるためです。

関数のパラメータを宣言して関数に渡すと、実際には変数自体のアドレスではなく変数のアドレスが渡されるため、パラメータに加えた変更は関数内だけでなく外部では影響を受けません。解決策として、次の

public String getBasicData(DataSnapshot dataSnapshot) { 

    return dataSnapshot.child("Users").getValue(); 
} 

を試すことができます。そして、あなたがその

textViewDataGet = getBasicData(dataSnapshot); 

のように、適切な場合に希望をそれを使用することができ、これは役立ちます:)

+0

を、私はそれを試してみましたが、それは私に3つのエラーが発生しますそれは、dataSnapshotのような変数がなく、文字列を期待していて、関数 "getBasicData"のオブジェクトではないことを示しています – Michael

関連する問題