本文主要是介绍DialogFragment NumberPicker的使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
DialogFragment参考博文:
http://www.cnblogs.com/tianzhijiexian/p/4161811.html
package com.example.util;import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.preference.Preference;
import android.support.v14.preference.SwitchPreference;
import android.text.format.Time;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.NumberPicker;public class BillingCycleSettings extends DataUsageBase implementsPreference.OnPreferenceChangeListener{public static class CycleEditorFragment extends DialogFragment implementsDialogInterface.OnClickListener{private static final String EXTRA_TEMPLATE="template";private NumberPicker mCycleDayPicker;public static void show(BillingCycleSettings parent){if(!parent.isAdded()) return;final Bundle args=new Bundle();args.putParcelable(EXTRA_TEMPLATE, parent.mNetworkTemplate);final CycleEditorFragment dialog=new CycleEditorFragment();dialog.setArguments(args);//这个方法可以保存Fragment的相关信息,同样是在Fragment中通过getArguments获取保存的信息dialog.setTargetFragment(parent, 0);//这个方法可以传递parent给dialog对应的类CycleEditorFragment,我们可以在CycleEditorFragment中通过getTargetFragment()获取parent实例dialog.show(parent.getFragmentManager(), TAG_CYCLE_EDITOR);}@Overridepublic Dialog onCreateDialog(Bundle savedInstanceState) {final Context context=getActivity();//Fragment中获取相关活动的方法final BillingCycleSettings target=(BillingCycleSettings)getTargetFragment();final NetworkPolicyEditor editor=target.services.mPolicyEditor;final AlertDialog.Builder builder=new AlertDialog.Builder(context);final LayoutInflater dialogInflater=LayoutInflater.from(builder.getContext());final View view=dialogInflater.inflate(R.layout.data_usage_cycle_editor, null,false);mCycleDayPicker=view.findViewById(R.id.cycle_day);final NetWorkTemplate template=getArguments().getParcelable(EXTRA_TEMPLATE);final int cycleDay=editor.getPolicyCycleDay(template);final int cycleDayValue=cycleDay;if(savedInstanceState!=null){cycleDayValue=savedInstanceState.getInt("cycleDayValue");}mCycleDayPicker.setMinValue(1);mCycleDayPicker.setMaxValue(31);mCycleDayPicker.setValue(cycleDayValue);mCycleDayPicker.setWrapSelectorWheel(true);return builder.setTitle(R.string.data_usage_cycle_editor_title).setView(view).setPositiveButton(R.string.data_usage_cycle_editor_positive,this).create();}@Overridepublic void onSaveInstanceState(Bundle outState) {// TODO Auto-generated method stubsuper.onSaveInstanceState(outState);outState.putInt("cycleDayValue", mCycleDayPicker.getValue());}@Overridepublic void onClick(DialogInterface arg0, int arg1) {final NetworkTemplate template=getArguments().getParcelable(EXTRA_TEMPLATE);final BillingCycleSettings target=(BillingCycleSettings)getTargetFragment();final NetworPolicyEditor editor=target.services.mPolicyEditor;mCycleDayPicker.clearFocus();final int cycleDay=mCycleDayPicker.getValue();final String cycleTimezone=new Time().timezone;editor.setPolicyCycleDay(template,cycleDay,cycleTimezone);target.updatePrefs(); }}}
对应的布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal" android:gravity="center"><TextView android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:textAppearance="?android:attr/textAppearanceMedium"android:text="@string/data_usage_cycle_editor_subtitle"/><NumberPicker android:id="@+id/cycle_day"android:layout_width="48dip"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:layout_marginStart="16dip"android:layout_marginEnd="16dip"android:focusable="true"android:focusableInTouchMode="true"/></LinearLayout>
这篇关于DialogFragment NumberPicker的使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!