android - 错误:如何将详细信息保存到我的 firebase 数据库中
问题描述
我尝试了很多时间来实现将我的 android Firebase 数据库搜索到我的移动应用程序,但它不起作用。我在这里附上了我的源代码。在我的情况下,我必须将我的详细信息保存在 firebase 中,而不是保存在我的 firebase 实时数据库中。请帮我。现在我更新了我的源代码,但仍然是这个错误。
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
public class AppointmentActivity extends AppCompatActivity {
private EditText name, pnumber, email, sdate, stime;
private Button send, cancel;
private Spinner sspinner, dspinner;
private static final String TAG="BookingActivity";
private TextView mDisplayDate;
private DatePickerDialog.OnDateSetListener mDateSetListener;
private DatabaseReference mFirebaseDatabase;
private FirebaseDatabase mFirebaseInstance;
//time
TextView chooseTime;
TimePickerDialog timePickerDialog;
Calendar calendar;
int currentHour;
int currentMinute;
String amPm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_appointment);
name = (EditText)findViewById(R.id.name);
pnumber = (EditText)findViewById(R.id.phoneno);
email = (EditText)findViewById(R.id.mail);
sdate = (EditText)findViewById(R.id.s_date);
stime = (EditText)findViewById(R.id.s_time);
sspinner = (Spinner)findViewById(R.id.s_spinner);
dspinner = (Spinner)findViewById(R.id.d_spinner);
cancel = (Button)findViewById(R.id.cancel);
send = (Button) findViewById(R.id.send);
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(AppointmentActivity.this, MainActivity.class);
startActivity(i);
}
});
//date
mDisplayDate=(TextView) findViewById(R.id.s_date);
mDisplayDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Calendar cal=Calendar.getInstance();
int year=cal.get(Calendar.YEAR);
int month=cal.get(Calendar.MONTH);
int day=cal.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dialog=new DatePickerDialog(
AppointmentActivity.this,
android.R.style.Theme_Holo_Light_Dialog_MinWidth,
mDateSetListener,
year, month, day);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.show();
}
});
mDateSetListener=new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int month, int day) {
month=month + 1;
Log.d(TAG, "onDateSet: mm/dd/yyy: " + month + "/" + day + "/" + year);
String date=month + "/" + day + "/" + year;
mDisplayDate.setText(date);
}
};
//time
chooseTime=findViewById(R.id.s_time);
chooseTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
calendar = Calendar.getInstance();
currentHour = calendar.get(Calendar.HOUR_OF_DAY);
currentMinute = calendar.get(Calendar.MINUTE);
timePickerDialog=new TimePickerDialog(AppointmentActivity.this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int hourOfDay, int minutes) {
if (hourOfDay >= 12) {
amPm="PM";
} else {
amPm="AM";
}
chooseTime.setText(String.format("%02d:%02d", hourOfDay, minutes) + amPm);
}
}, currentHour, currentMinute, false);
timePickerDialog.show();
}
});
mFirebaseInstance = FirebaseDatabase.getInstance();
mFirebaseDatabase = mFirebaseInstance.getInstance().getReference();
private void saveData() {
FirebaseUser mAuth = FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference mUserReference = FirebaseDatabase.getInstance().getReference();
HashMap<String, String> registerHash = new HashMap<>();
registerHash.put(mFirebaseDatabase.push(), "Your value");
registerHash.put(mFirebaseDatabase.push(), "Your value");
registerHash.put(mFirebaseDatabase.push(), "Your value");
registerHash.put(mFirebaseDatabase.push(), "Your value");
registerHash.put(mFirebaseDatabase.push(), "Your value");
mUserReference.setValue(registerHash).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Toast.makeText(CompleteProfileActivity.this, "Success", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(CompleteProfileActivity.this, "" + task.getException().getMessage(), Toast.LENGTH_SHORT).show();
}
}
});
}
}
}
解决方案
这很简单,只需这样做:-
private void saveData() {
FirebaseUser mAuth = FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference mUserReference = FirebaseDatabase.getInstance().getReference();
HashMap<String, String> registerHash = new HashMap<>();
registerHash.put(mFirebaseDatabase.push().getKey(), "Your value");
registerHash.put(mFirebaseDatabase.push().getKey(), "Your value");
registerHash.put(mFirebaseDatabase.push().getKey(), "Your value");
registerHash.put(mFirebaseDatabase.push().getKey(), "Your value");
registerHash.put(mFirebaseDatabase.push().getKey(), "Your value");
mUserReference.setValue(registerHash).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Toast.makeText(CompleteProfileActivity.this, "Success", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(CompleteProfileActivity.this, "" + task.getException().getMessage(), Toast.LENGTH_SHORT).show();
}
}
});
}
推荐阅读
- c# - 从 C# 调用 Powershell 函数
- angular - 离子,角度 - ChangeDetectorRef 未定义
- jquery - jquery DataTable 无法读取 JSON 数据
- c# - 如何在自定义 Linq 扩展方法中使用 StringComparer?
- java - 在java中使用for循环填充HashMap
- java - Spring-Boot 和休眠问题
- arrays - 验证数组
- python - Python列表理解:跳过引发异常的元素
- android - 是否可以将 Ionic 应用程序作为服务运行?
- azure-devops - VSTS Analytics 请求因超出资源 AnalyticsBlockingResource 的使用而被阻止