gpt4 book ai didi

android - 如何在 PreferenceFragment 中使用 DatePickerFragment 获取日期

转载 作者:行者123 更新时间:2023-11-29 20:57:51 25 4
gpt4 key购买 nike

我想在 PreferenceFragment 中使用 DatePickerFragment 作为出生日期。我们可以像使用 EditTextPreference 或其他任何我们必须使用的方式那样使用它吗?我知道 DatePickerFragemnt 和 PreferenceFragment 的基本功能。

任何帮助都适用。

已编辑

首选项的 .xml 文件

    <PreferenceCategory android:title="@string/pref_profile_setting" >
<EditTextPreference
android:title="@string/pref_user_name"
android:summary="@string/pref_user_name_summary"
android:key="prefName"/>

<com.mypkg.DatePickerFragment
android:title="@string/pref_gender"
android:summary="@string/pref_postcode_summary"
android:key="prefDob"
/>
<ListPreference
android:title="@string/pref_gender"
android:summary="@string/pref_postcode_summary"
android:key="prefGender"
android:entries="@array/gender"
android:entryValues="@array/gender_type"/>

</PreferenceCategory>
</PreferenceScreen>

Class that extended the PreferenceFragment

public class MyFragment extends PreferenceFragment implements OnPreferenceChangeListener{


private EditTextPreference etNamePref;
private ListPreference lvGenderPref;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_settings);

}

@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle paramBundle) {
View view = inflater.inflate(R.layout.fragment_settings, container, false);
initView();

return view;
}


private void initView() {
etNamePref = (EditTextPreference)findPreference(ConstantsUtil.PREF_NAME);
etNamePref.setOnPreferenceChangeListener(this);

}


@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
String key = preference.getKey();
if(key.equalsIgnoreCase(ConstantsUtil.PREF_NAME)){
etNamePref.setSummary(newValue.toString());
}
return false;
}
}

最佳答案

在您的 .xml 文件中添加首选项标签

<PreferenceCategory android:title="@string/pref_profile_setting" >
<EditTextPreference
android:title="@string/pref_user_name"
android:summary="@string/pref_user_name_summary"
android:key="prefName"/>

<Preference android:title="@string/pref_select_dob"
android:key="prefDob" >
<ListPreference
android:title="@string/pref_gender"
android:summary="@string/pref_postcode_summary"
android:key="prefGender"
android:entries="@array/gender"
android:entryValues="@array/gender_type"/>

</PreferenceCategory>
</PreferenceScreen>

在 .java 类中实现 OnPreferenceClickListener 和下面的代码

Preference preference = (Preference)findPreference("prefDob");
preference.setOnPreferenceClickListener(this);

在 onClick 中像下面这样调用 DatePickerFragment

@Override
public boolean onPreferenceClick(Preference preference) {
String key = preference.getKey();
if(key.equalsIgnoreCase("prefDob")){
showDatePicker();
}
return false;
}

protected void showDatePicker() {

DatePickerFragment date = new DatePickerFragment();

/**
* Set Up Current Date Into dialog
*/

Calendar calender = Calendar.getInstance();
Bundle args = new Bundle();
args.putInt("year", calender.get(Calendar.YEAR));
args.putInt("month", calender.get(Calendar.MONTH));
args.putInt("day", calender.get(Calendar.DAY_OF_MONTH));
date.setArguments(args);

/**
* Set Call back to capture selected date
*/

date.setCallBack(ondate);
date.show(getFragmentManager(), "Date Picker");

}
OnDateSetListener ondate = new OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
String dob = String.valueOf(dayOfMonth) + "/" + String.valueOf(monthOfYear)+ "/" + String.valueOf(year);

}
};

完成!

关于android - 如何在 PreferenceFragment 中使用 DatePickerFragment 获取日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27100340/

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