2011-02-28 98 views
1

我有一個自定義的DialogPreference。該對話框從PreferenceScreen中調用。 所有工作正常,對話框啓動並顯示TimePicker。PreferenceScreen中的Android TimePicker - >讀取值

但是,如何獲得選定的值? 首先,我嘗試在首選項的摘要中寫入選定的小時數。 (因此var xxx :) 稍後,我想將這些值保存在SharedPreferences中。

這是我現在:

public class Calendar extends DialogPreference implements 
    TimePicker.OnTimeChangedListener { 

TimePicker tp; 
int xxx; 

public Calendar(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    initialize(); 
} 

public Calendar(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
    initialize(); 
} 

private void initialize() { 
    setPersistent(true); 
} 

@Override 
protected View onCreateDialogView() { 
    tp = new TimePicker(getContext()); 
    tp.setIs24HourView(true); 

    return tp; 
} 

@Override 
public void onTimeChanged(TimePicker arg0, int arg1, int arg2) { 
} 

@Override 
public void onDialogClosed(boolean positiveResult) { 
    super.onDialogClosed(positiveResult); 
    if (positiveResult) { 
     // getEditor(). 
     setTitle(getTitle()); 
     setSummary(Integer.toString(xxx)); 

    } 
} 
private TimePicker.OnTimeChangedListener mTimeSetListener = 
    new TimePicker.OnTimeChangedListener() { 

     @Override 
     public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { 
      xxx=hourOfDay; 

     } 
    }; 
} 

非常感謝和問候

回答

1

感謝您問這個問題,是關於如何創建DialogPreference一個重要答案給我提供。

我希望我也可以爲你解答。我修改你的代碼一點點,我現在可以存儲從對話框中選擇的時間:

@Override 
protected View onCreateDialogView() { 
    this.tp = new TimePicker(getContext()); 
    this.tp.setIs24HourView(true); 
    final String storedValue = getPersistedString("07:00"); 
    final String[] split = storedValue.split(":"); 
    this.tp.setCurrentHour(Integer.parseInt(split[0])); 
    this.tp.setCurrentMinute(Integer.parseInt(split[1])); 
    return this.tp; 
} 

@Override 
public void onDialogClosed(boolean positiveResult) { 
    super.onDialogClosed(positiveResult); 
    if (positiveResult) { 
     final String result = this.tp.getCurrentHour() + ":" + this.tp.getCurrentMinute(); 
     persistString(result); 
    } 
} 

當所示的對話框我檢索存儲的值,並簡單地設置TimePickercurrentHourcurrentMinute領域。當對話框關閉時,另一種方式。由於我在路上和路上都控制了格式,所以不應該存在非法值的問題。

這就是您要找的內容?