面试总结

Fragment问题

多个Fragment使用show和hide来切换时的画面重叠的问题

一、    Fragment出现重复add的异常

原因:当添加Fragment的方法transaction.add(R.id.fragment_layout, fragment);出现在点击事件中触发,出现重复添加异常,点击过快产生的(即使加入fragment.isAdded()也是无效的)。所以需要自己根据需求在加一层判断(比如阻止连续点击)。

 

transaction = fragmentManager.beginTransaction();

    Fragment fragment = fragmentList.get(idx);

    if (!fragment.isAdded()) {//判断这个Fragment有没有添加过

       transaction.add(R.id.fragment_layout, fragment);

    }

    transaction.commit();

二、  Fragment出现重叠

原因:当Fragment依附的Activity因内存不足而被销毁时,那些Fragment没有被回收,当Activity从新启动时候那些旧的Fragment会再次覆盖上面

/**

* 为了内存不足时候Fragment和MainActivity同时销毁.

* <p>1.重写onSaveInstanceState

* <p>2.注释super.onSaveInstanceState(outState)或删除。可阻止activity保存fragment的状态

*/

publicvoid onSaveInstanceState(Bundle outState) { 

  //super.onSaveInstanceState(outState);

}

人生处处是惊喜
原文地址:https://www.cnblogs.com/ransky/p/5724946.html