Ich habe eine TextView
erstellt, die eine TimePickerDialog
öffnet und ich bin in der Lage, Zeit zu wählen, aktualisiert es die TextView
korrekt mit der gewählten Zeit. Aber wann immer ich die Activity
verlasse und zurückkomme, aktualisiert die TextView
die aktuelle Zeit, aber was ich will ist, die gewählte Zeit auf SharedPreferences
zu speichern und sie nur zu ändern, wenn ich mich entscheide, mich zu ändern. Ich habe 2 Tage damit verbracht, aber ich konnte die Zeit nicht sparen. Bitte helfe, das ist mein Code.Timepicker Dialog und SharedPreferences
package com.example.dexter.ddiary;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.Dialog;
import android.app.PendingIntent;
import android.app.TimePickerDialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.TimePicker;
import java.util.Calendar;
import java.util.Date;
public class RemindersActivity extends AppCompatActivity {
Calendar calender = Calendar.getInstance();
TextView mTimeView;
private int pHour;
private int pMinute;
static final int TIME_DIALOG_ID = 0;
private void updateDisplay() {
mTimeView.setText(new StringBuilder()
.append(pad(pHour)).append(":")
.append(pad(pMinute)));
}
private static String pad(int c) {
if (c >= 10)
return String.valueOf(c);
else
return "0" + String.valueOf(c);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_reminders);
final SharedPreferences sharedPref = RemindersActivity.this.getPreferences(Context.MODE_PRIVATE);
boolean isMyValueChecked = sharedPref.getBoolean("checkbox", false);
CheckBox checkbox = (CheckBox) findViewById(R.id.checkbox_alert);
checkbox.setChecked(isMyValueChecked);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
findViewById(R.id.checkbox_alert).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SharedPreferences.Editor editor = sharedPref.edit();
editor.putBoolean("checkbox", ((CheckBox) view).isChecked());
editor.commit();
calender.set(Calendar.HOUR_OF_DAY, pHour);
calender.set(Calendar.MINUTE, pMinute);
Intent intent = new Intent(getApplicationContext(), NotificationReciever.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 100,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calender.getTimeInMillis(),
alarmManager.INTERVAL_DAY, pendingIntent);
}
});
mTimeView = (TextView) findViewById(R.id.time_set);
mTimeView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog(TIME_DIALOG_ID);
}
});
final Calendar calendar = Calendar.getInstance();
pHour = calendar.get(Calendar.HOUR_OF_DAY);
pMinute = calendar.get(Calendar.MINUTE);
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case TIME_DIALOG_ID:
return new TimePickerDialog(RemindersActivity.this, mTimeSetListener, pHour, pMinute, false);
}
return null;
}
private TimePickerDialog.OnTimeSetListener mTimeSetListener =
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
pHour = hourOfDay;
pMinute = minute;
updateDisplay();
}
};
}
ist es, dass es nicht speichert, und Sie einen leeren Wert bekommen; – Remario