PickerView控件在Fragment中的正確使用
我在fragment使用PickerView遇到的bug

bug演示
可以看到在
fragment中使用時,第一次可以正常顯示pickerView控件,在退出App后再次進入時卻怎么點擊時間都無法顯示.ps剛開始以為是自己代碼問題研究了好久之后再在
activity中使用同樣的代碼卻沒有任何問題,使用完全正常.
what the F**k!!!

image
一.錯誤的代碼
/**
* 初始化時間選擇器
*/
private void initTimePicker() {//Dialog 模式下,在底部彈出
mTimePic = new TimePickerBuilder(mContext, new OnTimeSelectListener() {
@Override
public void onTimeSelect(Date date, View v) {
Toast.makeText(mContext, getTime(date), Toast.LENGTH_SHORT).show();
}
}).build();
}
//監(jiān)聽點擊事件后調(diào)用show方法
//不要以為是我 show 的時候 mTiePic 為 null 所以才 show 不了,告訴你我測過了不是的
mTimePic.show();
二.問題點
1.Fragment之間的切換是去替換,不是每一次切換都走onCreat()方法,所以要監(jiān)聽fragment的onResume()方法.在onResume()中去初始化時間選擇器.
2.不要使用mContext,他源代碼中用的MainActivity.this,所以應該使用getActivity().他要的是界面(Activity)不是上下文(Context)
三.我走過的彎路及坑就不展示了,直接上正確代碼
/**
* 初始化時間選擇器
*/
private void initTimePicker() {//Dialog 模式下,在底部彈出
mTimePic = new TimePickerBuilder(getActivity(), new OnTimeSelectListener() {
@Override
public void onTimeSelect(Date date, View v) {
Toast.makeText(getActivity(), getTime(date), Toast.LENGTH_SHORT).show();
}
}).build();
//監(jiān)聽點擊事件后調(diào)用show方法
//不要以為是我 show 的時候 mTiePic 為 null 所以才 show 不了,告訴你我測過了不是的
mTimePic.show();
}
@Override
public void onResume() {
super.onResume();
initTimePicker();
}
正確的演示

正確演示
ps:也許現(xiàn)在你用不到他,但你看了一遍后心里有個印象,萬一以后遇到了問題就可以來看看,減少不少的開發(fā)時間,這個問題讓我頭疼了一下午,一直以為是自己代碼的問題畢竟我第一次用
PickerView控件.要是不知道控件的基本使用方法也可以@我,很樂意與你交流.(整理花了2個小時間才能以如此簡介的方式呈現(xiàn)給您不求關注,只喜歡點個喜歡)