为什么我的应用程序停止后,我按下按钮
这是多么我已经注册但没有发送任何数据库的users..but虽然登记结束就好为什么我的应用程序停止后,我按下按钮
private void registerUser(){
//getting email and password from edit texts
String email = editTextEmail.getText().toString().trim();
String password = editTextPassword.getText().toString().trim();
//checking if email and passwords are empty
if(TextUtils.isEmpty(email)){
Toast.makeText(this,"Please enter email",Toast.LENGTH_LONG).show();
return;
}
if(TextUtils.isEmpty(password)){
Toast.makeText(this,"Please enter password",Toast.LENGTH_LONG).show();
return;
}
//if the email and password are not empty
//displaying a progress dialog
progressDialog.setMessage("Registering Please Wait...");
progressDialog.show();
//creating a new user
firebaseAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
//checking if success
if(task.isSuccessful()){
finish();
startActivity(new Intent(getApplicationContext(), ProfileActivity.class));
}else{
//display some message here
Toast.makeText(MainActivity.this,"Registration Error",Toast.LENGTH_LONG).show();
}
progressDialog.dismiss();
}
});
}
那么这里就是我的登录信息。活动。我可以登录,但很好,但我想知道这是什么cretiria用于登录用户的代码?
private void userLogin(){
String email = editTextEmail.getText().toString().trim();
String password = editTextPassword.getText().toString().trim();
//checking if email and passwords are empty
if(TextUtils.isEmpty(email)){
Toast.makeText(this,"Please enter email",Toast.LENGTH_LONG).show();
return;
}
if(TextUtils.isEmpty(password)){
Toast.makeText(this,"Please enter password",Toast.LENGTH_LONG).show();
return;
}
//if the email and password are not empty
//displaying a progress dialog
progressDialog.setMessage("Registering Please Wait...");
progressDialog.show();
//logging in the user
firebaseAuth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
progressDialog.dismiss();
//if the task is successfull
if(task.isSuccessful()){
//start the profile activity
finish();
startActivity(new Intent(getApplicationContext(), ProfileActivity.class));
}
}
});
}
改变你的类人这样
public class Person {
private String Username;
private String Email;
public Person(String email,String userName) {
this.Username=userName;
this.Email=email;
/*Blank default constructor essential for Firebase*/
}
//Getters and setters
public String getUsername() {
return Username;
}
public void setUsername(String Username) {
this.Username = Username;
}
public String getEmail() {
return Email;
}
public void setEmail(String Email) {
this.Email = Email;
}
}
然后使用它像这样
Person person=new Person();
person.setUsername(Username);
person.setEmail(Email);
Firebase newRef = ref.child("Users").push();
newRef.setValue(person);
然后用它来获取值
newRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Person person = dataSnapshot.getValue(Person.class);
String string = "Username: "+person.getName()+"\nEmail: "+person.getEmail()+"\n\n";
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
问题依然存在......数据被发送到正确的火力点,但该程序之后imediately停止... @ UmarAta –
错误是否已更改 –
11-22 21:14:15.522 30892-30892/com.example.moses.bstation E/UncaughtException:com.firebase.client.FirebaseException:无法反弹以在 处键入com.firebase.client.DataSnapshot.getValue(DataSnapshot。java:185) at com.example.moses.bstation.MainActivity $ 1 $ 1.onDataChange(MainActivity.java:57) –
的问题是在此描述:
com.fasterxml.jackson.databind.JsonMappingException:可以键入[简单类型,类 com.example.moses.bstation的不 实例化值。人]从字符串值;没有单一的字符串 构造/工厂方法
看来,JSON响应和人类之间的映射是不正确。
仔细检查您的Person类的实现,也请分享您的Person类执行情况和JSON响应的样本。
数据被正确发送到我的火力点,但之后应用程序停止 –
堆栈跟踪?它是一个特定的按钮? – MordechayS
发布logcat错误 –
是@MordenachayS这里是我的mainactivity.xml文件 –