Java SharedReferences和TimePickerDialog

Java SharedReferences和TimePickerDialog,java,android,sharedpreferences,timepicker,Java,Android,Sharedpreferences,Timepicker,万岁 我正在尝试编写我的第一个Android应用程序,但我遇到了困难 我想允许用户为每日计划设置“开始”和“停止”时间。我已经成功地实现了TimePickerDialog和它旁边的TextView,但我一辈子都不知道如何将用户选择的时间保存到SharedReferences字符串中 代码如下所示(为了清晰起见,将其精简): 我假设在更新TextView的同时应该节省时间。。。但我不知道怎么做-- 我现在花了5到6个小时寻找答案,但实际上我找不到答案。我已经试用过SharedReferences.

万岁
我正在尝试编写我的第一个Android应用程序,但我遇到了困难

我想允许用户为每日计划设置“开始”和“停止”时间。我已经成功地实现了TimePickerDialog和它旁边的TextView,但我一辈子都不知道如何将用户选择的时间保存到SharedReferences字符串中

代码如下所示(为了清晰起见,将其精简):

我假设在更新TextView的同时应该节省时间。。。但我不知道怎么做--

我现在花了5到6个小时寻找答案,但实际上我找不到答案。我已经试用过SharedReferences.Editor,但这不起作用,因为我需要将时间存储为长时间,而不是字符串。

我已经穷途末路了,我真的非常感谢你的帮助

在以下方法中

    // updates the time we display in the TextView
         private void updateDisplayStart() {
            mTimeDisplayStart.setText(
                    new StringBuilder()
                    .append(padStart(mHourStart)).append(":")
                    .append(padStart(mMinuteStart)));
        });

     SharedPreferences settingsActivity = getSharedPreferences("todolist1",
                    Activity.MODE_PRIVATE);
            SharedPreferences.Editor prefEditor = settingsActivity.edit();

            prefEditor.putString("DateToDisplay",new StringBuilder()
                    .append(padStart(mHourStart)).append(":")
                    .append(padStart(mMinuteStart));  // updates the time we display in the TextView



        prefEditor.commit();
}
在此之后,您希望从共享首选项中检索数据的位置如下

SharedPreferences settingsActivity = getSharedPreferences("todolist1",
                Activity.MODE_PRIVATE);

        if (settingsActivity.contains(DateToDisplay)) {
            String saveddate = settingsActivity
                    .getString(DateToDisplay, "");

用下面的方法

    // updates the time we display in the TextView
         private void updateDisplayStart() {
            mTimeDisplayStart.setText(
                    new StringBuilder()
                    .append(padStart(mHourStart)).append(":")
                    .append(padStart(mMinuteStart)));
        });

     SharedPreferences settingsActivity = getSharedPreferences("todolist1",
                    Activity.MODE_PRIVATE);
            SharedPreferences.Editor prefEditor = settingsActivity.edit();

            prefEditor.putString("DateToDisplay",new StringBuilder()
                    .append(padStart(mHourStart)).append(":")
                    .append(padStart(mMinuteStart));  // updates the time we display in the TextView



        prefEditor.commit();
}
在此之后,您希望从共享首选项中检索数据的位置如下

SharedPreferences settingsActivity = getSharedPreferences("todolist1",
                Activity.MODE_PRIVATE);

        if (settingsActivity.contains(DateToDisplay)) {
            String saveddate = settingsActivity
                    .getString(DateToDisplay, "");

你必须这样做

private TimePickerDialog.OnTimeSetListener mTimeSetListenerStart =
        new TimePickerDialog.OnTimeSetListener() {
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                mHourStart = hourOfDay;
                mMinuteStart = minute;
                updateDisplayStart();

                Calendar cal = Calendar.getInstance();
                cal.set(Calendar.HOUR_OF_DAY, hourOfDay);
                cal.set(Calendar.MINUTE, minute);
                mUserSettings.edit().putLong("starttime", cal.getTimeInMillis()).commit();

            }
        };

你必须这样做

private TimePickerDialog.OnTimeSetListener mTimeSetListenerStart =
        new TimePickerDialog.OnTimeSetListener() {
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                mHourStart = hourOfDay;
                mMinuteStart = minute;
                updateDisplayStart();

                Calendar cal = Calendar.getInstance();
                cal.set(Calendar.HOUR_OF_DAY, hourOfDay);
                cal.set(Calendar.MINUTE, minute);
                mUserSettings.edit().putLong("starttime", cal.getTimeInMillis()).commit();

            }
        };

SharedReferences
支持
long
s。你可以这样做


SharedReferences prefs=getSharedReferences(“prefs”,Context.MODE\u PRIVATE);
prefs.edit().putLong(“longKey”,longValue).commit();

来存储值。要检索它,您可以执行以下操作


SharedReferences prefs=getSharedReferences(“prefs”,Context.MODE\u PRIVATE);
long longValue=prefs.getLong(“longKey”,0l);

SharedReferences
支持
long
s。你可以这样做


SharedReferences prefs=getSharedReferences(“prefs”,Context.MODE\u PRIVATE);
prefs.edit().putLong(“longKey”,longValue).commit();

来存储值。要检索它,您可以执行以下操作


SharedReferences prefs=getSharedReferences(“prefs”,Context.MODE\u PRIVATE);
long longValue=prefs.getLong(“longKey”,0l);

此代码用于编辑共享参考文件:-

  • 私人共享参考myPrefs;myPrefs= 这个.getSharedReferences(“文件名”,模式\世界\可写); SharedReferences.Editor prefsEditor=myPrefs.edit(); prefsEditor.putString(“手机号”, getText_no.getText().toString().trim());提交()` 这是获取值SharedReference文件的一个代码:-

  • myPrefs=this.getSharedReferences(“myPrefs”,模式世界可读); String X=myPrefs.getString(“Mobile_no”,”)
    X==获取信息

    此代码用于编辑共享参考文件:-

  • 私人共享参考myPrefs;myPrefs= 这个.getSharedReferences(“文件名”,模式\世界\可写); SharedReferences.Editor prefsEditor=myPrefs.edit(); prefsEditor.putString(“手机号”, getText_no.getText().toString().trim());提交()` 这是获取值SharedReference文件的一个代码:-

  • myPrefs=this.getSharedReferences(“myPrefs”,模式世界可读); String X=myPrefs.getString(“Mobile_no”,”)
    X==获取信息

    感谢您的及时回答!只是一些事情;我刚刚复制并粘贴了代码。我这样做对吗?我似乎在
    prefEditor.putString(“DateToDisplay”,new StringBuilder()上遇到语法错误
    行,以及该行下面的所有代码。
    prefEditor
    是自定义活动,还是需要导入?我在android.content repository中找不到它。再次感谢!感谢您的及时回答!不过,只是做了几件事;我刚刚复制并粘贴了该代码。我这样做对吗?我似乎在页面上遇到了语法错误
    prefEditor.putString(“DateToDisplay”,新的StringBuilder()
    行,以及下面的所有代码。
    prefEditor
    是自定义活动,还是需要导入?我在android.content存储库中找不到它。再次感谢!好的,请澄清,
    longKey
    是SharedReferences条目,
    longValue
    是时间(以hh:mm格式)我需要存储的是什么?好的,那么澄清一下,
    longKey
    是SharedReferences条目,
    longValue
    是我需要存储的时间(hh:mm格式)?这不只是设置
    “开始时间”吗
    到当前时间?我还是会尝试一下。谢谢!这是一个示例代码,用于在首选项中放置长数据,您可以用自己的方式修改它。和cal.getTimeInMillis()将返回您在“time piker”对话框上设置的日期。太棒了!现在我只需要解决如何将毫秒改回正常时间,您就解决了问题!非常感谢!!这不仅仅是设置
    “starttime”吗
    到当前时间?我还是会尝试一下。谢谢!这是一个示例代码,用于在首选项中放置长数据,您可以用自己的方式修改它。和cal.getTimeInMillis()将返回您在time piker对话框上设置的日期。太棒了!现在我只需要解决如何将毫秒更改回正常时间,您就解决了问题!非常感谢!!