美文网首页
PickerView控件在Fragment中的正确使用

PickerView控件在Fragment中的正确使用

作者: 柏林billy | 来源:发表于2018-10-29 20:10 被阅读0次

    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();
    }
    
    //监听点击事件后调用show方法   
    //不要以为是我 show 的时候 mTiePic 为 null 所以才 show 不了,告诉你我测过了不是的
    mTimePic.show();
    

    二.问题点

    1.Fragment之间的切换是去替换,不是每一次切换都走onCreat()方法,所以要监听fragmentonResume()方法.在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();
    
    
            //监听点击事件后调用show方法   
            //不要以为是我 show 的时候 mTiePic 为 null 所以才 show 不了,告诉你我测过了不是的
            mTimePic.show();
    }
    
    @Override
    public void onResume() {
        super.onResume();
        initTimePicker();
    }
    

    正确的演示

    正确演示
    ps:也许现在你用不到他,但你看了一遍后心里有个印象,万一以后遇到了问题就可以来看看,减少不少的开发时间,这个问题让我头疼了一下午,一直以为是自己代码的问题毕竟我第一次用PickerView控件.要是不知道控件的基本使用方法也可以@我,很乐意与你交流.(整理花了2个小时间才能以如此简介的方式呈现给您不求关注,只喜欢点个喜欢)

    你的喜欢与关注是持续创作的动力

    相关文章

      网友评论

          本文标题:PickerView控件在Fragment中的正确使用

          本文链接:https://www.haomeiwen.com/subject/gcaczftx.html