Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android通過DialogFragment實現時間選擇

android通過DialogFragment實現時間選擇

編輯:關於Android編程

 在android開發中,時間控件是不可或缺的一部分,特別是在設置個人生日或按時間進行搜索時都要用到。Android有內置的DatePicker和timePicker,使用起來也是相當的方便,既可以在布局中添加後findViewById調用,也可以直接在activity中重寫onCreateDialog(int id)方法後調用showDialog(int id)彈出,現在網上關於android時間控件的demo也大都基於這兩個控件的使用說明。但用過這兩個控件的人都知道,這兩個時間選擇框有兩個不太好的地方:1、不是特別美觀2、時間控件生命周期不可控。如果想解決上面的問題,我們一般都會通過繼承Dialog,寫一個美觀並且滿足要求的時間控件。但這樣花費的時間肯定比使用DatePicker和timePicker要多得多。     當然,網上還是有很多不錯的開源時間控件供我們選擇,如android-wheel,它是一個仿IOS滾輪樣式的時間選擇控件(         用過datePicker和timepicker的人應該都知道showDialog(int id)其實是一個已經過時的方法,在方法的說明中我們可以找到這麼一段話:This method was deprecated in API level 13.Use the new DialogFragment class with FragmentManager instead; this is also available on older platforms through the Android compatibility package.     大概意思是:showDialog(int id)這個方法在API 13就已經過時了,新API可以通過使用DialogFragment類和FragmentManager代替它,DailogFragment和FragmentManager在版本API(低於13)也是可用的,但是需要引入兼容包。     那下面我們來看看怎麼通過DialogFragment和FragmentManager來實現選擇時間,以及它相對於showDialog(int id)有哪些優勢?     我們首先去android開發者官網找,其中官網就有這麼一句話:The DialogFragment manages the dialog lifecycle for you and allows you to display the pickers in different layout configurations, such as in a basic dialog on handsets or as an embedded part of the layout on large screens.     大概意思就是:DialogFragment可以讓我們自己去管理時間選擇控件的生命周期並且可以讓我們自己給控件設置不同的配置參數,即可以讓控件以基本形狀顯示,也可以放到一個布局中包裹著顯示在大屏幕手機上。     同樣,官網上DialogFragment的使用也是很方便的。下面我們來看看:     首先,我們要自定義個Fragement並讓他它繼承DialogFragment,還需要讓它實現TimePickerDialog.OnTimeSetListener   接口,代碼如下:        public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener{       int _year=1970;     int _month=0;     int _day=0;           @Override     public Dialog onCreateDialog(Bundle savedInstanceState) {         final Calendar c=Calendar.getInstance();         int year=c.get(Calendar.YEAR);         int month=c.get(Calendar.MONTH);         int day=c.get(Calendar.DAY_OF_MONTH);         return new DatePickerDialog(getActivity(), this, year, month, day);     }           @Override     public void onDateSet(DatePicker view, int year, int monthOfYear,             int dayOfMonth) {         // TODO 日期選擇完成事件,取消時不會觸發         _year=year;         _month=monthOfYear+1;         _day=dayOfMonth;         Log.i(Constant.LOG_TAG, "year="+year+",monthOfYear="+monthOfYear+",dayOfMonth="+dayOfMonth);     }       private String getValue(){         return ""+_year+_month+_day;     }       }   當我們點擊某個控件後要彈出時間選擇器只要直接調用下面的方法就行了。     private void showDatePickerFragemnt(){     DialogFragment fragment=new DatePickerFragment();     fragment.show(getSupportFragmentManager(), "datePicker"); }
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved