2012-03-21 2 views
0

후로!
첫 안드로이드 앱을 쓸 때 손을 꼽고 벽돌 벽에 부딪 혔습니다.SharedPreferences 및 TimePickerDialog

사용자가 일일 일정에 대해 '시작'및 '중지'시간을 설정하도록 허용하려고합니다. 나는 TimePickerDialog와 TextView를 옆에 성공적으로 구현했다. 그러나 나는 LifePreferences 문자열에 사용자가 선택한 시간을 저장하는 방법을 생각할 수 없다.

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.setup); 
     // Retrieve the shared preferences 
     mUserSettings = getSharedPreferences(USER_PREFERENCES, MODE_PRIVATE); 

     // capture our View elements 
     mTimeDisplayStart = (TextView) findViewById(R.id.TextView_ScheduleStart_Info); 
     mPickTimeStart = (Button) findViewById(R.id.Button_ScheduleStart); 

     // add a click listener to the button 
     mPickTimeStart.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       showDialog(TIME_DIALOG_START); 
      } 
     }); 

     // get the current time 
     final Calendar c = Calendar.getInstance(); 
     mHourStart = c.get(Calendar.HOUR_OF_DAY); 
     mMinuteStart = c.get(Calendar.MINUTE); 

     // display the current date 
     updateDisplayStart(); 
    } 

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

    private static String padStart(int c) { 
     if (c >= 10) 
      return String.valueOf(c); 
     else 
      return "0" + String.valueOf(c); 
    } 

    // the callback received when the user "sets" the time in the dialog 
    private TimePickerDialog.OnTimeSetListener mTimeSetListenerStart = 
     new TimePickerDialog.OnTimeSetListener() { 
      public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
       mHourStart = hourOfDay; 
       mMinuteStart = minute; 
       updateDisplayStart(); 
      } 
     }; 

    @Override 
    protected Dialog onCreateDialog(int id) { 
     switch (id) { 
     case TIME_DIALOG_START: 
      return new TimePickerDialog(this, 
        mTimeSetListenerStart, mHourStart, mMinuteStart, false); 
     } 
     return null; 
    } 

내가 시간이 텍스트 뷰가 업데이트되는 동시에 저장해야한다고 가정 ...하지만 난 방법을 몰라 다음과 같이

코드 (명확성을 위하여 옷을 벗었)입니다 do -.-

나는 이제 5 ~ 6 시간 동안 좋은 결과를 보냈지 만 문자 그대로 찾을 수는 없다. 나는 SharedPreferences.Editor를 실험했지만 시간이 아닌 String으로 저장해야하기 때문에 작동하지 않습니다.
나는 로프의 끝 부분에있어, 정말 도움이 될만한 !! 이 후

// 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(); 
} 

이제까지 어디에서 다음과 같은 방법

답변

1

을 다음과 같이이

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(); 

      } 
     }; 
+0

"starttime"을 현재 시간으로 설정하지 않습니까? 그래도 사용해 보겠습니다. 감사합니다! – TrippySquidsman

+0

이것은 샘플 코드입니다. 긴 데이터를 환경 설정에 넣으면 자신 만의 방식으로 수정할 수 있습니다. – Dharmendra

+0

그리고 cal.getTimeInMillis()는 piker 대화 상자에서 설정 한 날짜를 반환합니다 .. – Dharmendra

2

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

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

감사를 얻을! 하지만 몇 가지 사항은 있습니다. 방금 ​​그 코드를 복사하여 붙여 넣었습니다. 이 일을 제대로 할 수 있습니까? 'prefEditor.putString ("DateToDisplay", new StringBuilder()' 줄 및 그 아래의 모든 코드에서 구문 오류가 발생하는 것 같습니다. 'prefEditor'는 사용자 지정 활동입니까, 아니면 가져올 필요가 있습니까 ? android.content 저장소에서 찾을 수 없습니다. 다시 감사합니다! – TrippySquidsman

0

처럼해야 할 공유 환경 설정에서 데이터를 검색하려면 SharedPreferenceslong을 지원합니다. 당신은 값을 저장하는

SharedPreferences prefs = getSharedPreferences("prefs", Context.MODE_PRIVATE); prefs.edit().putLong("longKey", longValue).commit();

처럼 뭔가를 할 수 있습니다. 를 검색하려면 SharedPreference 파일을 편집 할

SharedPreferences prefs = getSharedPreferences("prefs", Context.MODE_PRIVATE); long longValue = prefs.getLong("longKey", 0l);

+0

좋아요. rify,'longKey'는 SharedPreferences 항목이고'longValue'는 저장해야하는 시간 (hh : mm 형식)입니까? – TrippySquidsman

0

이 하나 개의 코드를 수행 할 수 있습니다 -

  1. 민간 된 SharedPreferences의 myPrefs을; myPrefs = this.getSharedPreferences ("filename", MODE_WORLD_WRITEABLE); SharedPreferences.Editor prefsEditor = myPrefs.edit(); prefsEditor.putString ("Mobile_no", getText_no.getText(). toString(). trim()); prefsEditor.commit(); '

값 SharedPreference 파일에 도착이 하나 개의 코드 : -

  1. myPrefs = this.getSharedPreferences ("myPrefs", MODE_WORLD_READABLE); 문자열 X = myPrefs.getString ("Mobile_no", "");

X == 프롬프트 응답에 대한 정보를