Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在“取消”按钮上清除时间选择器的共享首选项?_Java_Android_Android Studio_Sharedpreferences_Timepicker - Fatal编程技术网

Java 如何在“取消”按钮上清除时间选择器的共享首选项?

Java 如何在“取消”按钮上清除时间选择器的共享首选项?,java,android,android-studio,sharedpreferences,timepicker,Java,Android,Android Studio,Sharedpreferences,Timepicker,我正在做一个项目,我有两个按钮和一个文本视图在布局中,供时间选择器设置通知, 按钮选取器和按钮取消器 我过去是通过共享首选项在时间选择器中选择来节省时间的。 共享首选项工作正常 但我面临的问题是,当我单击“取消”按钮时,我的应用程序仍然显示由时间选择器设置的通知,即使我有ImplementEditor.clear;在共享首选项上单击“取消”按钮列表器 当我删除共享首选项时,它会正常工作,取消时间和通知 在这里,我想要的是将时间保存在“设置时间”按钮上的共享首选项中,并在“取消时间”按钮上清除“共

我正在做一个项目,我有两个按钮和一个文本视图在布局中,供时间选择器设置通知, 按钮选取器和按钮取消器

我过去是通过共享首选项在时间选择器中选择来节省时间的。 共享首选项工作正常

但我面临的问题是,当我单击“取消”按钮时,我的应用程序仍然显示由时间选择器设置的通知,即使我有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();