我正在尝试一个警报应用程序,该应用程序从数据库(Firestore)中检索时间值,并将其存储为String,但是它在我的onTimeSet方法中抛出NullPointerException,我不知道该怎么办。
这是我的方法(dbAlarmManager)。
private FirebaseFirestore db;
private dbReminder tt;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.alarmmanager);
db = FirebaseFirestore.getInstance();
db.collection("Reminder").get()
.addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
if (!queryDocumentSnapshots.isEmpty()) {
List<DocumentSnapshot> list = queryDocumentSnapshots.getDocuments();
for (DocumentSnapshot d : list) {
dbReminder p = d.toObject(dbReminder.class);
p.setId(d.getId());
remtasklist.add(p);
onTimeSet(); }
adapter.notifyDataSetChanged();
}
}
});
}
private void onTimeSet(){
String strtime = tt.getTime();
String[] parts = strtime.split(":");
String part1 = parts[0];
String part2 = parts[1];
int hr = Integer.parseInt(part1);
int min = Integer.parseInt(part2);
final int _id = (int)System.currentTimeMillis();
Intent alarmIntent = new Intent(dbAlarmManager.this, mainPlan.AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(dbAlarmManager.this, _id, alarmIntent, 0);
AlarmManager manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, hr);
calendar.set(Calendar.MINUTE, min);
manager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
Log.i(TAG, "Time to alarm is " + part1 + ":" + part2);
}
dbReminder。
import java.io.Serializable;
@IgnoreExtraProperties
public class dbReminder implements Serializable {
@Exclude
private String id;
private String time;
public dbReminder(String title, String desc, String inLocation, String objPerson, String time) {
this.time = time;
}
public dbReminder() {
//empty constructor needed
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTime() {
return time;
}
这是我的logcat。
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.asus.robot.onzenbo.dbReminder.getTime()' on a null object reference
at com.asus.robot.onzenbo.dbAlarmManager.onTimeSet(dbAlarmManager.java:62)
at com.asus.robot.onzenbo.dbAlarmManager.access$100(dbAlarmManager.java:21)
at com.asus.robot.onzenbo.dbAlarmManager$1.onSuccess(dbAlarmManager.java:49)
at com.asus.robot.onzenbo.dbAlarmManager$1.onSuccess(dbAlarmManager.java:39)
提前谢谢!你们可以问,我不知道还有什么。
答案 0 :(得分:0)
您必须先初始化dbReminder
,例如:
String strtime = tt.getTime();