Android Fragment 重叠问题
在android网站看文档学习使用Fragment时遇到了一个问题,Fragment切换后还可以看见之前的Fragment,并且之前的Fragment依旧可以点击,查了很久没有结果,现在把我的问题以及原因分享出来,供和我遇到一样问题的朋友参考。
我实现的是在一个Activity中添加一个ListFragment,点击题目以后动态添加一个带TextView的Fragment并切换到它。
一开始我的ListFragment是继承android.app.ListFragment,而Fragment继承自android.support.v4.app.Fragment,出现了重叠问题。之后把ListFragment的父类改成android.support.v4.app.ListFragment,圆满解决问题。
接着就试验了把Fragment的父类改成android.app.Fragment,也解决了问题,但是又出现了新问题,下面会讨论,不过这两个方案说明:切换时不要混着用! 这是一切问题的根源。
前面说到使用android.app.Fragment和android.app.ListFragment虽然成功但是有一个问题就是当按back键的时候不回退到ListFragment而是直接退出,说明addToBackStack()方法没有效果。我的IDE是Android Studio 2.1,在这种情况下新建的工程中MainActiviyt默认是继承android.support.v7.app.AppCompatActivity的,还是和重叠的问题一样混着用,改成直接继承Activity就可以了。
还有一种情况在developer android给的例子中MainActivity是继承android.support.v4.app.FragmentActivity的,在这种情况下继承自android.app.Fragment和android.app.ListFragment的Fragment也是不能回退到切换之前的。
说到android.app.ListFragment还有一件事,它不调用onAttach(Context context)方法,而在继承自android.support.v4.app.ListFragment的类中会调用。