我正在尝试创建一个日记,用户可以在其中编写带有标题的日记,并将其保存在Firebase数据库中。该代码应具有以下功能:

用户在相应的文本视图中键入标题和日记,然后单击“提交”,该信息将作为字符串保存在Firebase数据库中。稍后,我也想检索该数据,但现在,我只是想将数据保存到数据库中。该应用程序不断崩溃,因此我什至无法启动它。

以下是Java代码:

public class draft extends AppCompatActivity {

    TextView diary;
    TextView titlee;

    Button submit;

    DatabaseReference mDatabase;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        diary  = findViewById(R.id.Diary);
        titlee = findViewById(R.id.Title);
        submit = findViewById(R.id.Submit);



        setContentView(R.layout.activity_draft);




        submit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FirebaseDatabase database = FirebaseDatabase.getInstance();
                DatabaseReference mDatabase = database.getReference("diary");
                String fdiary =diary.getText().toString();
                String ftitle =titlee.getText().toString();
                String userId = mDatabase.push().getKey();
                diaryclass userDiary = new diaryclass(ftitle,fdiary);
                mDatabase.child(userId).setValue(userDiary);

            }
        });
    }
}


下面是日记类的java文件

public class diaryclass {

    public  String Title;
    public  String Diary;

    public  diaryclass(){

    }

    public  diaryclass(String Title,String Diary){
        this.Title=Title;
        this.Diary=Diary;
    }

}


下面是xml视图的图片,因此更容易想象该视图

java - 正在创建日记应用,但无法从文本 View 中获取要保存在Firebase数据库中的文本-LMLPHP



解决了

使用此修改,代码现在可以正常工作

            String diaryTitle =  titlee.getText().toString();
            String diaryContent = diary.getText().toString();
            String userId = mDatabase.push().getKey();
            HashMap<String, String> hashMap = new HashMap<>();
            hashMap.put("Diary", diaryContent);
            hashMap.put("Title", diaryTitle);
            mDatabase.child(userId).setValue(hashMap);
            titlee.setText("");
            diary.setText("");

最佳答案

为什么不尝试使用HashMaps推送值?您可以这样做:

submit.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        FirebaseDatabase database = FirebaseDatabase.getInstance();
        DatabaseReference mDatabase = database.getReference("diary");
        String fdiary =diary.getText().toString();
        String ftitle =titlee.getText().toString();

        HashMap<String, String> hashMap = new HashMap<>();
        hashMap.put("Diary", fdiary);
        hashMap.put("Title", ftitle);

        mDatabase.push().setValue(hashMap);
    }
});


这会将值保存在数据库中。现在,在数据库的一个分支下,您将拥有Diary:fdiary和Title:ftitle。要检索这些值,可以使用ValueEventListener

07-26 07:34
查看更多