2016-12-08 10 views
-1

私はサインインアプリケーションを作成しました。私はfirebaseデータベースで使用しています。 しかし、データベースにオブジェクトを保存しようとすると問題が発生します。単純な文字列やシンプルな文字列を保存しようとしているときには、HashMapオブジェクトはすべて動作します。アンドロイドはfirebaseにオブジェクトを保存します

私はエラーを得た:ここ

com.google.firebase.database.DatabaseException: Found a conflicting setters with name: setWallpaper (conflicts with setWallpaper defined on android.content.ContextWrapper)

は私のコードです:

主な活動:

public class MainActivity extends AppCompatActivity { 
    EditText userName; 
    EditText password; 
    Button signInbtn; 
    DatabaseReference url; 
    Map<String, User> users = new HashMap<String, User>(); 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     final FirebaseDatabase database = FirebaseDatabase.getInstance(); 
     url = database.getInstance().getReference(); 
     userName = (EditText) findViewById(R.id.userName); 
     password = (EditText) findViewById(R.id.password); 
     signInbtn = (Button) findViewById(R.id.signInBtn); 
     signInbtn.setOnClickListener(signObject); 

    } 
    View.OnClickListener signObject = new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      User user = new User("Moshe","1234"); 
      users.put("101",user); 
      DatabaseReference userUrl = url.child("Users"); 
      userUrl.setValue(users); 
      System.out.println(users); 
     } 
    }; 

クラスユーザー:

public class User extends Application { 

    public static String password; 
    public static String name ; 

    public User(){ 

    } 

    public User(String name,String password){ 
     this.name = name; 
     this.password = password; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     User.name = name; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public void setPassword(String password) { 
     User.password = password; 
    } 
} 

マニフェストにpermmision.Internetを追加しました。私はこの件について、そして特にFirebaseについて多くの質問を読んだが、私の問題に対する解決策は見つけられなかった。

答えて

1

Firebaseは、かなり基本的なJavaオブジェクト(いわゆるPlain Old Java ObjectsまたはPOJO)のみを読み書きできます。 UserクラスをApplicationに拡張すると、それらのルールに違反しています。

ソリューションは、あなたのUserクラスが完全にスタンドアロンにすることです:

public class User { 
    ... 
+0

私はあなたがそれをコンパイルしている間にアプリが破砕ないが、それでも、それは多くの理由かもしれないデータ –

+0

を保存していない今言うことでした実際には異なる質問になるでしょう。つまり、私は 'setValue()'でセキュリティ問題を聞いて始めます。 http://stackoverflow.com/documentation/firebase/5548/how-do-i-listen-for-errors-when-accessing-the-database/19721/detect-errors-when-writing-a-value-onを参照してください。 -android#t = 201612090709222522846 –

関連する問題