Java 如何在“取消”按钮上清除时间选择器的共享首选项?
我正在做一个项目,我有两个按钮和一个文本视图在布局中,供时间选择器设置通知, 按钮选取器和按钮取消器 我过去是通过共享首选项在时间选择器中选择来节省时间的。 共享首选项工作正常 但我面临的问题是,当我单击“取消”按钮时,我的应用程序仍然显示由时间选择器设置的通知,即使我有ImplementEditor.clear;在共享首选项上单击“取消”按钮列表器 当我删除共享首选项时,它会正常工作,取消时间和通知 在这里,我想要的是将时间保存在“设置时间”按钮上的共享首选项中,并在“取消时间”按钮上清除“共享首选项”Java 如何在“取消”按钮上清除时间选择器的共享首选项?,java,android,android-studio,sharedpreferences,timepicker,Java,Android,Android Studio,Sharedpreferences,Timepicker,我正在做一个项目,我有两个按钮和一个文本视图在布局中,供时间选择器设置通知, 按钮选取器和按钮取消器 我过去是通过共享首选项在时间选择器中选择来节省时间的。 共享首选项工作正常 但我面临的问题是,当我单击“取消”按钮时,我的应用程序仍然显示由时间选择器设置的通知,即使我有ImplementEditor.clear;在共享首选项上单击“取消”按钮列表器 当我删除共享首选项时,它会正常工作,取消时间和通知 在这里,我想要的是将时间保存在“设置时间”按钮上的共享首选项中,并在“取消时间”按钮上清除“共
public class drvschedule extends AppCompatActivity implements
TimePickerDialog.OnTimeSetListener {
private TextView mTextView;
SharedPreferences myPrefdrv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_drvschedule);
mTextView = findViewById(R.id.drtmslctd);
Button buttonTimePicker = findViewById(R.id.setdrvtm);
buttonTimePicker.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogFragment timePicker = new TimePickerFragment();
timePicker.show(getSupportFragmentManager(), "time picker");
}
});
Button buttonCancelTime = findViewById(R.id.cncldrvtm);
buttonCancelTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences.Editor editor=myPrefdrv.edit();
editor.clear();
editor.apply();
cancelAlarm();
}
});
myPrefdrv=getPreferences(MODE_PRIVATE);
}
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, hourOfDay);
c.set(Calendar.MINUTE, minute);
c.set(Calendar.SECOND, 0);
updateTimeText(c);
startAlarm(c);
}
private void updateTimeText(Calendar c) {
String timeText = "Notification set for Driving: ";
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
timeText +=
DateFormat.getTimeInstance(DateFormat.SHORT).format(c.getTime());
}
mTextView.setText(timeText);
}
private void startAlarm(Calendar c) {
AlarmManager alarmManager = (AlarmManager)
getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, AlertReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 1,
intent, 0);
if (c.before(Calendar.getInstance())) {
c.add(Calendar.DATE, 1);
}
SharedPreferences.Editor editor=myPrefdrv.edit();
editor.apply();
alarmManager.setExact(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(),
pendingIntent);
}
private void cancelAlarm() {
AlarmManager alarmManager = (AlarmManager)
getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 1,
intent, 0);
alarmManager.cancel(pendingIntent);
mTextView.setText("Notification canceled");
}
}
//used to save preferences....
SharedPreferences.Editor editor=myPrefdrv.edit();
editor.apply();
//used to clear preference....
SharedPreferences.Editor editor=myPrefdrv.edit();
editor.clear();
editor.apply();
请尝试使用此代码存储、获取和清除SharedPreferences数据 我们在这个方法中传递了两个参数getSharedPreferenceString PREFS_NAME,int mode PREFS_NAME是文件的名称 模式是操作模式 存储数据 获取数据 清晰数据
感谢您的回复,我知道在共享首选项中保存数据,因为我在以前的活动中使用了此代码方法,但我在这里节省时间,为了清除时间,我的程序节省了时间,但没有清除它。
SharedPreferences pref = getSharedPreferences("mypref", 0);
SharedPreferences.Editor editor = pref.edit();
editor.putString("deviceToc",token); // Storing string
editor.apply();
SharedPreferences sharedpreferences = getSharedPreferences("mypref", 0);
SharedPreferences prefs = sharedpreferences;
String string = prefs.getString("deviceToc", null);
SharedPreferences sharedpreferences = getSharedPreferences("mypref", 0);
sharedpreferences.edit().clear().commit();