- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我使用 firebase 数据库,在我的应用程序中我将一些数据放入数据库中,但问题是我没有检索这些数据。使用此代码,我希望使用唯一的用户名进行注册,但是当我将数据放入注册 Activity 时,具有相同用户名的信息将被更新。在代码开头,FirebaseDatabase 数据库等于“null”
,但我不明白为什么。
我的 firebase 数据结构:
注册.java:
public class Registration extends AppCompatActivity {
EditText ET_USER_LOCATION, ET_USER_MAIL, ET_USER_NAME, ET_USER_PASS;
String method, user_location, user_mail, user_name, user_pass;
Button registerButton;
Context mContext;
String token = FirebaseInstanceId.getInstance().getToken();
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference users = database.getReference("UserApp");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_registration);
mContext = this;
ET_USER_LOCATION = (EditText) findViewById(R.id.new_user_location);
ET_USER_MAIL = (EditText) findViewById(R.id.new_user_mail);
ET_USER_NAME = (EditText) findViewById(R.id.new_user_name);
ET_USER_PASS = (EditText) findViewById(R.id.new_user_pass);
registerButton = (Button) findViewById(R.id.registerButton);
registerButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
user_location = ET_USER_LOCATION.getText().toString();
user_mail = ET_USER_MAIL.getText().toString();
user_name = ET_USER_NAME.getText().toString();
user_pass = ET_USER_PASS.getText().toString();
DatabaseReference name = users.child("user_name");
name.addValueEventListener(new ValueEventListener() {
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String user = dataSnapshot.getValue(String.class);
if(!Objects.equals(user, user_name)){
writeNewUser(user_name, user_mail, user_pass, user_location, token);
} else {
Toast.makeText(mContext, "This username is already registered. Try again!", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
finish();
}
});
}
public void userReg(){
}
private void writeNewUser(String user_name, String user_mail, String user_pass, String user_location, String user_token) {
UserApp user = new UserApp(user_name, user_mail, user_pass, user_location, user_token);
users.child(user_name).setValue(user);
}
}
UserApp.java:
@IgnoreExtraProperties
public class UserApp {
public String user_name;
public String user_mail;
public String user_pass;
public String user_location;
public String user_token;
public UserApp() {
// Default constructor required for calls to DataSnapshot.getValue(User.class)
}
public UserApp(String user_name, String user_mail, String user_pass, String user_location, String user_token) {
this.user_name = user_name;
this.user_mail = user_mail;
this.user_pass = user_pass;
this.user_location = user_location;
this.user_token = user_token;
}
}
提前感谢您的帮助。
最佳答案
我找到了解决方案:
注册.java:
public class Registration extends AppCompatActivity {
EditText ET_USER_LOCATION, ET_USER_MAIL, ET_USER_NAME, ET_USER_PASS;
String method, user_location, user_mail, user_name, user_pass;
Button registerButton;
Context mContext;
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference users = database.getReference("UserApp");
String key = users.child("UserApp").push().getKey();
String token = FirebaseInstanceId.getInstance().getToken();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_registration);
mContext = this;
ET_USER_LOCATION = (EditText) findViewById(R.id.new_user_location);
ET_USER_MAIL = (EditText) findViewById(R.id.new_user_mail);
ET_USER_NAME = (EditText) findViewById(R.id.new_user_name);
ET_USER_PASS = (EditText) findViewById(R.id.new_user_pass);
registerButton = (Button) findViewById(R.id.registerButton);
registerButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
user_location = ET_USER_LOCATION.getText().toString();
user_mail = ET_USER_MAIL.getText().toString();
user_name = ET_USER_NAME.getText().toString();
user_pass = ET_USER_PASS.getText().toString();
users.addValueEventListener(new ValueEventListener() {
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String result = registerWithoutRepetition(dataSnapshot);
Toast.makeText(mContext, result, Toast.LENGTH_SHORT).show();
if(Objects.equals(result, "Login Success")){
finish();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
});
}
private void writeNewUser(String user_id, String user_name, String user_mail, String user_pass, String user_location, String user_token) {
UserApp user = new UserApp(user_name, user_mail, user_pass, user_location, user_token);
users.child(user_id).setValue(user);
}
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
private String registerWithoutRepetition(DataSnapshot dataSnapshot){
for(DataSnapshot snapshot : dataSnapshot.getChildren()) {
UserApp userApp = snapshot.getValue(UserApp.class);
if (Objects.equals(userApp.user_name, user_name)) {
return "Username is already registered, try again";
}
}
writeNewUser(key, user_name, user_mail, user_pass, user_location, token);
return "Login Success";
}
关于java - 使用 FirebaseDatabase 检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38363534/
所以,我是 Firebase 的新手,我正在关注这个人关于如何将 Swift 应用连接到 Firebase 的教程,这对他来说完全没问题。但是当我尝试导入“FirebaseDatabase”时,它给了
friend 们,我安装名为用于选择国家/地区的 SwiftCountrySelector,但在安装 pod 后我收到名为 FirebaseDatabase/FirebaseDatabase.h 的错
如何在适用于 Android 的新 FirebaseDatabase API 中设置 FirebaseDatabase 的缓存大小? 我只是将我的遗留代码更新到新版本,旧设置是: Fireba
我看到了 databaseReference 和 FirebaseDatabase 之间的一些差异,例如:databaseReference 用于所有数据库操作,但我想了解更多主要差异。 最佳答案 这
我正在使用带有 Firebase 数据库的 Swift 3 开发 iOS 应用。 我的播客文件: target 'MyApp' do # Comment the next line if you'
我正在将数据从 js.function 发送到 Firebase 数据库。数据由两个字符串和1个数据/时间变量组成,js函数的源代码如下: $('#send_button').click(functi
我想知道是否可以使用 FirebaseDatabase 方法为全局变量赋值。我知道 FirebaseDatabase 方法是异步的,并且在后台执行,不会阻塞主线程。但我陷入了在 onDataChang
我有一个问题,我不能只得到最近添加的 child 。 这是我的数据库: 这是我的测试代码: val db = FirebaseDatabase.getInstance().reference
removeAllObservers() 是否仅删除其调用的 DatabaseReference 实例的所有观察者,或指定路径上的任何引用? 例如: MainController.swift let
我正在尝试使用简单的搜索栏 (EditText) 按用户名搜索存储在我的 firebase 数据库中的用户,并在单击按钮时显示该特定用户 我的 findfriends.java 文件中有以下代码 pu
这个问题在这里已经有了答案: how to stop the items duplication in recyclerView android (2 个答案) How do I clear an
我使用 firebase 数据库,在我的应用程序中我将一些数据放入数据库中,但问题是我没有检索这些数据。使用此代码,我希望使用唯一的用户名进行注册,但是当我将数据放入注册 Activity 时,具有相
我正在从 firebase 数据库中检索所有用户并将它们显示在 recyclerView 中。它显示城镇、用户名和图像。我能够检索,但它只显示一个用户而不是所有用户。数据库有很多用户,但只显示一个。任
我正在制作一个应用程序,在该应用程序中,用户登录,我存储他们的信息;但是,我注意到在他们注册后我没有用户的密码信息。在通过 Firebase 注册时存储用户密码是个好主意吗?有什么地方我需要他们的密码
我正在尝试使用 Flutter 在 firebase 数据库中运行事务,但出现错误,有人可以帮我解决这个问题吗? 代码: ref.runTransaction((MutableData transac
这个问题已经有答案了: Should FirebaseDatabase.getInstance() be used sparingly? (1 个回答) 已关闭 6 年前。 使用 Firebase 开
我正在尝试访问 shrubs 子项,并在 shrubs 下的每个唯一键下访问键值对,例如键:ShrubbedWord 值:yfyj 我已经尝试过,但我什么也没得到:- postsData = Fire
我希望我的 Firebase 数据库使用用户个人资料图片 URL 进行初始化我尝试添加此内容,但我认为 profileImageUrl 变量未使用 ImageUri 变量进行初始化?请帮助完成这件事.
所以我目前正在开发像snapchat这样的克隆,我正在向服务器发送拉取请求,但至于下载,进展并不顺利。我创建了一个对数据库的引用,如下所示, var recievers: FIRDatabaseRef
想要将此代码连接到 FirebaseDatabase。但我在连接时遇到错误。 错误:- 无法将“[Datasnapshot]”类型的值转换为预期的参数类型“UView”。 Below is Code
我是一名优秀的程序员,十分优秀!