【问题标题】:android save object in firebaseandroid在firebase中保存对象
【发布时间】:2017-04-24 00:33:55
【问题描述】:

我创建了登录应用程序,并且正在使用 firebase 数据库。 但是当我尝试在数据库中保存对象时遇到问题。虽然当我尝试保存简单的字符串或简单的 HashMap 对象时,一切正常。

我遇到了一个错误:

com.google.firebase.database.DatabaseException: 发现名称冲突的设置器:setWallpaper(与 android.content.ContextWrapper 上定义的 setWallpaper 冲突)

这是我的代码:

主要活动:

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 的问题,但我没有找到任何解决问题的方法。

【问题讨论】:

    标签: android database firebase-realtime-database


    【解决方案1】:

    Firebase 只能在数据库中读取和写入相当基本的 Java 对象(所谓的普通 Java 对象或 POJO)。通过从 Application 扩展您的 User 类,您违反了这些规则。

    解决方案是让您的 User 类完全独立:

    public class User {
        ...
    

    【讨论】:

    • 我按照你说的做了,应用程序在编译时没有崩溃,但仍然没有保存数据
    • 这可能有很多原因,而且确实是一个不同的问题。这就是说:我会先在setValue() 中侦听安全问题。见stackoverflow.com/documentation/firebase/5548/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多