Я новичок в Firebase и Android.Я хочу иметь две таблицы в Firebase,
- При регистрации пользователя, таблица для сведений о пользователе
Users
- При регистрации руководств таблица
Guides
для сведений о руководстве
Я использую два класса, один для пользователя и один для направляющих, чтобы получать и устанавливать значения через методы получения и установки.
Я уже создал два объекта databaseReference для двух кнопок.Он работает с пользователями, но не с руководствами.Когда я нажимаю кнопку гида, чтобы получить регистрационную форму, она отображает К сожалению, гид перестал работать. и вернулась на первую страницу.
Я подумал, что из-за API, во-первых, я установил целевой API-уровень Android на 27, а затем я запустил на Android-API 22-й уровень, так что до API-уровня 22 и снова всплывающее окно с ошибкой.
Может кто-нибудь мне помочь?
Это мой код,
Guides.java
public class Guides {
String guideName;
String guidePhoneNo;
String guideLanguages;
String guideMail;
String guidePwd;
public Guides(){
}
public Guides(String guideName,String guidePhoneNo,String guideLanguages,String guideMail, String guidePwd){
guideName=guideName;
guidePhoneNo=guidePhoneNo;
guideLanguages=guideLanguages;
guideMail=guideMail;
guidePwd=guidePwd;
}
public String getGuideName() {
return guideName;
}
public void setGuideName(String guideName) {
this.guideName = guideName;
}
public String getGuidePhoneNo() {
return guidePhoneNo;
}
public void setGuidePhoneNo(String guidePhoneNo) {
this.guidePhoneNo = guidePhoneNo;
}
public String getGuideLanguages() {
return guideLanguages;
}
public void setGuideLanguages(String guideLanguages) {
this.guideLanguages = guideLanguages;
}
public String getGuideMail() {
return guideMail;
}
public void setGuideMail(String guideMail) {
this.guideMail = guideMail;
}
public String getGuidePwd() {
return guidePwd;
}
public void setGuidePwd(String guidePwd) {
this.guidePwd = guidePwd;
}}
GuideRegActivity.java
public class GuideRegActivity extends AppCompatActivity {
EditText guideName,guidePhoneNo,guideLanguages,guideMail,guidePwd;
Button btnGuideReg;
FirebaseDatabase FirebaseDatabase;
DatabaseReference databseReference1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_guide_reg);
guideName=(EditText)findViewById(R.id.guideName);
guidePhoneNo=(EditText)findViewById(R.id.guidePhoneNo);
guideLanguages=(EditText)findViewById(R.id.guideLanguages);
guideMail=(EditText)findViewById(R.id.guideMail);
guidePwd=(EditText)findViewById(R.id.guidePwd);
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
databseReference1 = FirebaseDatabase.getInstance().getReference("Guides");
btnGuideReg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addArrayList();
}
});
}
private void addArrayList() {
String gName= guideName.getText().toString().trim();
String gPNo=guidePhoneNo.getText().toString().trim();
String gLang=guideLanguages.getText().toString().trim();
String gMail=guideMail.getText().toString().trim();
String gPwd=guidePwd.getText().toString().trim();
if(TextUtils.isEmpty(gName)){
Toast.makeText(this,"Please Enter Guide Name",Toast.LENGTH_LONG).show();
}else if(TextUtils.isEmpty(gPNo)){
Toast.makeText(this,"Please Enter Contact No",Toast.LENGTH_LONG).show();
}else if(TextUtils.isEmpty(gLang)){
Toast.makeText(this,"Please Enter Languages You can",Toast.LENGTH_LONG).show();
}else if(TextUtils.isEmpty(gMail)){
Toast.makeText(this,"Please Enter Your E Mail",Toast.LENGTH_LONG).show();
}else if(TextUtils.isEmpty(gPwd)){
Toast.makeText(this,"Please Enter Password",Toast.LENGTH_LONG).show();
}else{
String id =databseReference1.push().getKey();
Guides guides = new Guides(gName,gPNo,gLang,gMail,gPwd);
databseReference1.child(id).child("Guide Name").setValue(gName.toString());
databseReference1.child(id).child("Contact No").setValue(gPNo.toString());
databseReference1.child(id).child("Vehicle Type").setValue(gName.toString());
databseReference1.child(id).child("Mail").setValue(gPNo.toString());
databseReference1.child(id).child("Password").setValue(gPwd.toString());
Toast.makeText(this,"Guide Added",Toast.LENGTH_LONG).show();
ClearText();
}
}
private void ClearText() {
guideName.setText("");
guideLanguages.setText("");
guidePwd.setText("");
guideMail.setText("");
guidePhoneNo.setText("");
}}
Users.java
public class Users {
String userName;
String userMail;
String userPwd;
public Users(){
}
public Users(String userName , String userMail,String userPwd){
userName=userName;
userMail=userMail;
userPwd=userPwd;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserMail() {
return userMail;
}
public void setUserMail(String userMail) {
this.userMail = userMail;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}}
UserRegActivity.java
public class UserRegActivity extends AppCompatActivity {
EditText userName,userMail,userPwd;
Button btnRegUser;
FirebaseDatabase FirebaseDatabase;
DatabaseReference databseReference;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_reg);
userName=(EditText)findViewById(R.id.userName);
userMail=(EditText)findViewById(R.id.userMail);
userPwd=(EditText)findViewById(R.id.userPwd);
btnRegUser=(Button)findViewById(R.id.btnUserReg);
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
databseReference = FirebaseDatabase.getInstance().getReference("Users");
btnRegUser.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addArrayList();
}
});
}
private void addArrayList() {
String uName= userName.getText().toString().trim();
String uMail=userMail.getText().toString().trim();
String uPwd=userPwd.getText().toString().trim();
if(TextUtils.isEmpty(uName)){
Toast.makeText(this,"Please Enter User Name",Toast.LENGTH_LONG).show();
}else if(TextUtils.isEmpty(uMail)){
Toast.makeText(this,"Please Enter Your Mail",Toast.LENGTH_LONG).show();
}else if(TextUtils.isEmpty(uPwd)){
Toast.makeText(this,"Please Enter Password",Toast.LENGTH_LONG).show();
}else{
String id =databseReference.push().getKey();
Users users = new Users(uName,uMail,uPwd);
databseReference.child(id).child("UserName").setValue(uName.toString());
databseReference.child(id).child("Email").setValue(uMail.toString());
databseReference.child(id).child("Password").setValue(uPwd.toString());
Toast.makeText(this,"User Added",Toast.LENGTH_LONG).show();
ClearText();
}
}
private void ClearText(){
userName.setText("");
userMail.setText("");
userPwd.setText("");
}}
Загрузить: моя текущая структура базы данных, здесь Только пользователи получат
и вот мой журнал ошибок
05-17 19:39:56.489 20503-20503/com.example.hansi.tourguide E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.hansi.tourguide, PID: 20503
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.hansi.tourguide/com.example.hansi.tourguide.GuideRegActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2695)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2769)
at android.app.ActivityThread.access$900(ActivityThread.java:177)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1430)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5910)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
at com.example.hansi.tourguide.GuideRegActivity.onCreate(GuideRegActivity.java:36)
at android.app.Activity.performCreate(Activity.java:6178)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2648)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2769)
at android.app.ActivityThread.access$900(ActivityThread.java:177)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1430)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5910)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)