我正在尝试创建一个日记,用户可以在其中编写带有标题的日记,并将其保存在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视图的图片,因此更容易想象该视图
解决了
使用此修改,代码现在可以正常工作
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
。