以前はSQLデータベースを使用していた既存のプロジェクトにFirebaseを実装する方法を学習しようとしています。私は正しく動作するコードを書いているが、私の読書は以下のDatabaseExceptionエラーを投げている。データの取得時にAndroid DatabaseExceptionエラーが発生しました
com.google.firebase.database.DatabaseException:競合 名前のセッターが見つかりました:setWallpaperを(setWallpaperとの競合がandroid.content.ContextWrapperに を定義した)
私は良いビットを行っていますこのエラーがデータベースに書き込まれてから読み込まれるのではなく、このエラーの参照を見つけることができるので、このエラーを発生させるために自分のコードで行ったことについては非常に混乱しています。メソッドコードは以下の通りです。
protected void lastFive() {
final DatabaseReference gameRef = database.getReference("Games");
final List<User> gamesList = new ArrayList<>();
gameRef.orderByChild("Date").limitToLast(5).addValueEventListener (new ValueEventListener () {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
gamesList.clear();
for (DataSnapshot postSnapshot: dataSnapshot.getChildren()){
User user = postSnapshot.getValue(User.class);
gamesList.add (user);
System.out.println(user.getName() + " : " + user.getScore());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
});
}
ライン方式でエラーが参照しているように見えるです:
User user = postSnapshot.getValue(User.class);
私だけなので、半分よりもオフとオン数ヶ月のためのAndroidでの作業、およびFirebaseされていますそれは私が単に見ていないこれにいくつかの目障りなエラーがある可能性があります。 FWIW、このメソッドは、アプリケーションで再生された最後の5試合のユーザー名とスコアを表示するためのものです。私は出力がどのように見えるかを少し心配しています。私が知っているのはこの質問の範囲外ですが、私がデータを読むまではそれに取り組むことさえできません。どんな助けや提案も大歓迎です。
要求に応じてユーザーコードが追加されます。例外として
public class User extends Application {
//private variable
private static User globalVar;
//variables
String _id;
String _name;
int _score;
String _date;
String _email;
// Empty constructor
public User(){}
// constructor
public User(String id, String name, int score, String date){
this._id = id;
this._name = name;
this._score = score;
this._date = date;
}
public User(String id, int score){
this._id = id;
this._score = score;
}
public User(String id){
this._id = id;
}
public User(int score, String date){
this._score = score;
}
// getting ID
public String getID(){
return this._id;
}
// setting id
public void setID(String id){
this._id = id;
}
// getting name
public String getName(){
return this._name;
}
// setting name
public void setName(String name){
this._name = name;
}
// getting scores
public int getScore(){ return this._score; }
// setting scores
public void setScore(int score){ this._score = score; }
// getting name
public String getDate(){
return this._date;
}
// setting name
public void setDate(String date){
this._date = date;
}
// getting email
public String getEmail(){
return this._email;
}
// setting email
public void setEmail(String email){
this._email = email;
}
public static synchronized User getGlobalVar(){
if(globalVar == null){
globalVar = new User();
}
return globalVar;
}
}
Userクラスのソースコードを表示してください。 –
ユーザーのモデルクラスを追加してください。そこに問題があるようです。あなたはそれを取得する前に火事ベースのDBに値を入れていますか? –
このコードを実行する前に、ユーザコードが追加され、値がFBに追加されます。理想的には、ポップアップウィンドウにポップアップウィンドウが表示され、DBが空のときに "No games played"というメッセージが表示されるようにしたいのですが、これは一度データを正常に取得する方法を理解していることです。 –