Ema*_*een 2 android dialog persistent timepicker listpreference
我想在偏好设置屏幕中设置时间选择器,并允许用户选择开始时间和结束时间,并将其存储为与其他设置一样的持久值.
你能否展示设置它所需的所有编码,因为我无法通过搜索找到类似的东西.
我想也许时间选择器应该在一个对话框中,但我还不知道如何设置它们.如果您可以显示调用带有开始和结束时间时间选择器的对话框的编码,以及如何保存该信息以便以后从首选项屏幕中检索,那将是很好的.
所有帮助将不胜感激.
真的,Emad
我TimePreference在我的一本书中使用了一个简单的东西:
import android.content.Context;
import android.content.res.TypedArray;
import android.preference.DialogPreference;
import android.util.AttributeSet;
import android.view.View;
import android.widget.TimePicker;
public class TimePreference extends DialogPreference {
private int lastHour=0;
private int lastMinute=0;
private TimePicker picker=null;
public static int getHour(String time) {
String[] pieces=time.split(":");
return(Integer.parseInt(pieces[0]));
}
public static int getMinute(String time) {
String[] pieces=time.split(":");
return(Integer.parseInt(pieces[1]));
}
public TimePreference(Context ctxt, AttributeSet attrs) {
super(ctxt, attrs);
setPositiveButtonText("Set");
setNegativeButtonText("Cancel");
}
@Override
protected View onCreateDialogView() {
picker=new TimePicker(getContext());
return(picker);
}
@Override
protected void onBindDialogView(View v) {
super.onBindDialogView(v);
picker.setCurrentHour(lastHour);
picker.setCurrentMinute(lastMinute);
}
@Override
protected void onDialogClosed(boolean positiveResult) {
super.onDialogClosed(positiveResult);
if (positiveResult) {
lastHour=picker.getCurrentHour();
lastMinute=picker.getCurrentMinute();
String time=String.valueOf(lastHour)+":"+String.valueOf(lastMinute);
if (callChangeListener(time)) {
persistString(time);
}
}
}
@Override
protected Object onGetDefaultValue(TypedArray a, int index) {
return(a.getString(index));
}
@Override
protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {
String time=null;
if (restoreValue) {
if (defaultValue==null) {
time=getPersistedString("00:00");
}
else {
time=getPersistedString(defaultValue.toString());
}
}
else {
time=defaultValue.toString();
}
lastHour=getHour(time);
lastMinute=getMinute(time);
}
}
Run Code Online (Sandbox Code Playgroud)
生产级别的实现将使用字符串资源作为两个按钮标题.它可能还会对值进行更多错误检查,以防某些代码通过它更新SharedPreferences.Editor并且不能正确格式化.
| 归档时间: |
|
| 查看次数: |
2678 次 |
| 最近记录: |