gpt4 book ai didi

java - 是否可以保存时间选择器的数据并在下次应用程序启动时显示它们?

转载 作者:行者123 更新时间:2023-12-01 12:38:25 26 4
gpt4 key购买 nike

我正在开发一个项目,其中包括用户输入时间选择器选择的任何时间,但是当我退出应用程序并再次打开它时,选择的时间就消失了。

是否可以保存时间选择器数据并在应用程序下次启动时使用它们?谢谢你

import java.util.Calendar;
import java.util.concurrent.TimeUnit;

import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;
import android.widget.TimePicker.OnTimeChangedListener;

public class AndroidTimeActivity extends Activity {

TimePicker myTimePicker;
Button buttonstartSetDialog;
Button buttonCancelAlarm;
TextView textAlarmPrompt;

private TimePicker timePicker;
CheckBox optRepeat;
SharedPreferences sPref;
final static int RQS_1 = 1;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

timePicker = (TimePicker)findViewById(R.id.picker);
optRepeat = (CheckBox)findViewById(R.id.optrepeat);
textAlarmPrompt = (TextView)findViewById(R.id.alarmprompt);
buttonstartSetDialog = (Button)findViewById(R.id.startSetDialog);
TimePicker dp = (TimePicker)this.findViewById(R.id.picker);
dp.setCurrentHour(1);
//
dp.setCurrentMinute(01);



buttonstartSetDialog.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {

Calendar calSet = Calendar.getInstance();

calSet.set(Calendar.HOUR_OF_DAY, timePicker.getCurrentHour());
calSet.set(Calendar.MINUTE, timePicker.getCurrentMinute());
calSet.set(Calendar.SECOND, 0);
calSet.set(Calendar.MILLISECOND, 0);



setAlarm(calSet, optRepeat.isChecked());
}});

buttonCancelAlarm = (Button)findViewById(R.id.cancel);
buttonCancelAlarm.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View arg0) {
cancelAlarm();
}});


}


private void setAlarm(Calendar targetCal, boolean repeat){

Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), RQS_1, intent, 0);
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);



if(repeat){
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
targetCal.getTimeInMillis(),
AlarmManager.INTERVAL_DAY,
pendingIntent);

textAlarmPrompt.setText(
"\n\n***\n"
+ "Alarm is set@ " + targetCal.getTime() + "\n"
+ "Repeat\n"
+ "***\n");
}else{
alarmManager.set(AlarmManager.RTC_WAKEUP,
targetCal.getTimeInMillis(),
pendingIntent);

textAlarmPrompt.setText(
"\n\n***\n"
+ "Alarm is set@ " + targetCal.getTime() + "\n"
+ "One shot\n"
+ "***\n");
}

}




private void cancelAlarm(){

textAlarmPrompt.setText(
"\n\n***\n"
+ "Alarm Cancelled! \n"
+ "***\n");

Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), RQS_1, intent, 0);
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(pendingIntent);






timePicker.setOnTimeChangedListener(new OnTimeChangedListener(){

@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
Toast.makeText(getApplicationContext(),
"onTimeChanged", Toast.LENGTH_SHORT).show();

}});

}
}

编辑:感谢 kruczjak,我找到了解决方案:

我在 onclick 中使用了此代码,以便在单击按钮时将值保存到首选项

SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit(); editor.putInt("hour", timePicker.getCurrentHour()); editor.putInt("minute", timePicker.getCurrentMinute()); editor.commit();

并使用此代码从首选项中打开最后保存的值

SharedPreferences prefs = getPreferences(MODE_PRIVATE); timePicker.setCurrentHour(prefs.getInt("hour", 1)); timePicker.setCurrentMinute(prefs.getInt("minute", 01));

最佳答案

尝试重写 Activity 中的 onStop() 方法,并在其中添加代码以保存从 timePicker 中选择的时间(数据库、文件甚至共享首选项)。然后读取并应用到onCreate()

中的 timePicker

请参阅这篇有关 Activity 生命周期的文章了解更多信息 http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

关于java - 是否可以保存时间选择器的数据并在下次应用程序启动时显示它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25350917/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com