Fragment 常见问题

2017-08-26  本文已影响0人  指尖流逝的青春

Fragment的onAttach()方法不被调用问题

在Fragment与宿主Activity通过接口传递数据的时候,需要一个接口。

@Override
    public void onAttach(Context context) {//onAttach方法有两个重载,一个传递的参数是Activity,一个是Context,传递参数为context的在一些Android版本上面由bug,(如果是使用的Fragment包,而不是v4.support.fragment包就会有);
        super.onAttach(context);
        //This makes sure that the container activity has implemented the callback interface. If not, it throws an exception

        //加入判断:
        if (context instanceof MyListener) {//如果该Fragment Attach的Activity实现了MyListener接口
            mylistener = (MyListener) context;//实例化该接口
        }
        //或者捕获异常
//        try {
//            mylistener = (MyListener) context;
//        } catch (ClassCastException e) {
//            throw new ClassCastException(context.toString() + "包含该Fragment的Activity必须实现MyListener接口");
//        }
    }

    /**
     *
     * 如果使用的是 android.app.Fragment;而不是android.support.v4.app.Fragment;
     * 则需要传递参数为Activity
     * @Override
     * public void onAttach(Activity activity) {
     *    super.onAttach(activity);
     *    if (activity instanceof MyListener) {
     *       mylistener = (MyListener) activity;
     *    }
     * }
     */

Fragment中的hide()和show()方法在调用的时候不会走Fragment的生命周期,所以需要手动在hide或者show以后进行uservisible的设置,hide以后seruservisible为false,show以后设置为true

上一篇下一篇

猜你喜欢

热点阅读