Android Fragment使用hide和show方法的问题

       Fragment的强大是毋庸置疑的,现在是越来越喜欢使用它了,但是使用中我也是头疼了好一阵,各种小bug层出,记录一下:

       我们使用Fragment去填充布局的时候,是有两种方法可以实现的:一种是使用fragment的管理器的replace()方法,另一种就是使用hide()和show()方法对Fragment显示隐藏。

很明显replace()方法就是不断的替换覆盖当前布局,每一次的replace()都会重新实例化一个Fragment,这种方法适合所销毁的Fragment不需要我们保存状态,每次都需要重新加载的,但是有时是不想不断的去实例化Fragment的这样也是比较耗时的(尤其是在网络较差时),而且很多时候业务上要求也不是要实时刷新数据的,这时候就要使用这hide和收尾方法了,不去每次都new一个Fragment。  之前我有写过hide和show方法(http://blog.csdn.net/my_jack/article/details/52934447),可以去看一下。

        当我使用hide和show方法的时候遇见了问题了,当我的三个Fragment A , B , C都实例化之后,我在B界面显示的时候,点击B界面会执行C界面的点击事件。当时真的是下了我这一下,好诡异啊。不断测试一下,发现当B界面没有了点击事件设置时会发生这种点击穿透布局的事件。应该是宿主保存了各个Fragment的状态了,所以在需要的Fragment中重写一下onSaveInstaceState方法就可以了:

 @Override
    protected void onSaveInstanceState(Bundle outState) {
        //阻止activity保存fragment的状态
        //super.onSaveInstanceState(outState);
    }

还在研究中,如果有更好的方法在更新喽大笑

猜你喜欢

转载自blog.csdn.net/My_Jack/article/details/53435835
今日推荐