android - 无法将数据添加到 firebasedatabse
问题描述
我刚刚发现了 firebase 并想测试我是否可以将它用作我的 android 应用程序的数据库。我想我正在向它发送数据,但在 firebase 控制台上它显示 nada。我想尽一切办法自己解决它,但似乎我缺乏知识。请赐教:(
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
public class home extends AppCompatActivity {
private FirebaseDatabase mFirebaseI;
private DatabaseReference mFirebaseD;
private String uMail;
EditText userMail; // textbox where i write data to be sent to databse
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
userMail = findViewById(R.id.mail);
mFirebaseI = FirebaseDatabase.getInstance();
mFirebaseD = mFirebaseI.getReference("DataUsers");
uMail=mFirebaseD.push().getKey();
}
public void addUser(String mail)
{
DataBaseData users = new DataBaseData(mail); //class i made with just one string attribute
mFirebaseD.child("Users").child(uMail).setValue(users);
}
public void send(){
addUser(userMail.getText().toString().trim());
}
}
解决方案
Ok so I learned that realtime database is "outdated" and that firestore is way better and easier to use. And it is! So what I did to add just a single "name" to "users" collection is this :
public class home extends AppCompatActivity {
private FirebaseFirestore mFirestore;
//private String uMail;
EditText userMail;
Button btnSend;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
btnSend = findViewById(R.id.send);
userMail = findViewById(R.id.mail);
mFirestore = FirebaseFirestore.getInstance();
btnSend.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
String username = userMail.getText().toString(); //pseudo a save dans la bdd
Map<String, String> userMap = new HashMap<>(); //hashmap obligatoire pour utiliser firestore
userMap.put("name", username); // suavegarder le pseudo dans la bdd sous le nom de document "name"
mFirestore.collection("users").add(userMap).addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
@Override
public void onSuccess(DocumentReference documentReference) {
Toast.makeText(home.this, "added", Toast.LENGTH_SHORT).show();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
String error = e.getMessage();
Toast.makeText(home.this, "failed:" + error, Toast.LENGTH_SHORT).show();
}
});
}
});
}
I think it's pretty simple so I didn't add any comments for you guys I mean if I understand it then anyone can haha! anyways thanks for trying to help me out!
推荐阅读
- flutter - AnimatedList 在删除最后一项时抛出错误
- r - Flexdashboard 禁用闪亮输入
- java - 尝试解析 JSON 字符串时出错。org.json.JSONException:JSONArray 文本必须以“[”开头
- excel - 将数据粘贴到“A4”的下一个空白中
- android - 当我尝试通过 BottomNavigation 导航时,Kotlin 应用程序崩溃
- r - igraph:总结每个节点的邻居特征
- python - pandas data frame, max of columns while keeping index
- firebase - Firestore:更好地了解获取其他文档时安全规则的工作原理
- python - 将外部函数的参数作为python中内部函数的参数传递?
- python - 是否可以在浏览器中使用 pyodide 的 wasm 构建 python 轮?