Fragmento se superpone a veces al cambiar las pestañas
Tengo un diseño de dos paneles con mis botones a la izquierda. Cuando se pulsa un botón, se muestra su fragmento correspondiente a la derecha. A veces los fragmentos se superponen, pero esto es una cuestión intermitente. No puedo replicar todo el tiempo, pero sucede
public void onClick(View v) { switch (v.getId()) { case R.id.imageButtonSettingsManageBooks: SettingsManageBooksFragment mbFragment = new SettingsManageBooksFragment(); getFragmentManager().beginTransaction().replace(R.id.setting_detail_container2, mbFragment).addToBackStack(null).commit(); mImgFragmentTitle.setImageResource(R.drawable.manage_my_books); this.getSupportFragmentManager().executePendingTransactions(); break; case R.id.imageButtonSettingsPurchaseHistory: SettingsPurchaseHistoryFragment phFragment = new SettingsPurchaseHistoryFragment(); getFragmentManager().beginTransaction().replace(R.id.setting_detail_container2, phFragment).commit(); mImgFragmentTitle.setImageResource(R.drawable.purchase_history); this.getSupportFragmentManager().executePendingTransactions(); break; case R.id.imageButtonSettingsAudio: SettingsAudioFragment aFragment = new SettingsAudioFragment(); getFragmentManager().beginTransaction().replace(R.id.setting_detail_container2, aFragment).commit(); mImgFragmentTitle.setImageResource(R.drawable.audio); this.getSupportFragmentManager().executePendingTransactions(); break; case R.id.imageButtonSettingsRestore: SettingsRestoreFragment rFragment = new SettingsRestoreFragment(); getFragmentManager().beginTransaction().replace(R.id.setting_detail_container2, rFragment).commit(); mImgFragmentTitle.setImageResource(R.drawable.restore); this.getSupportFragmentManager().executePendingTransactions(); break; case R.id.imageButtonSettingsCopyright: SettingsCopyrightFragment cFragment = new SettingsCopyrightFragment(); getFragmentManager().beginTransaction().replace(R.id.setting_detail_container2, cFragment).commit(); mImgFragmentTitle.setImageResource(R.drawable.copyright); this.getSupportFragmentManager().executePendingTransactions(); break; case R.id.imageButtonSettingsAbout: SettingsAboutFragment abFragment = new SettingsAboutFragment(); getFragmentManager().beginTransaction().replace(R.id.setting_detail_container2, abFragment).commit(); mImgFragmentTitle.setImageResource(R.drawable.about); this.getSupportFragmentManager().executePendingTransactions(); break;
Parece que estoy reemplazando cada fragmento con un nuevo fragmento que podría estar causando la superposición. ¿Hay alguna manera de borrar todos los fragmentos antes de comprometer uno nuevo?
- Comprobar la existencia de un fragmento usando Robotium - Android
- Cómo obtener datos de DialogFragment a un fragmento?
- RecyclerView con fragmentos
- Android Fragment onCreateView vs. onActivityCreated
- Descripción de SetRetainInstance del fragmento (boolean)
- Android ViewPager: fragmentos superpuestos cuando el ancho de página se establece en 90%
- Realizar una acción cuando el fragmento ha terminado correctamente la carga
- Vista de lista de Android dentro de un fragmento
- Fragmento superpone la rotación de la actividad
- ¿Por qué ViewPager genera errores en el modo de diseño de Android Studio?
- Actualización de fragmentos / vistas en viewpager con fragmentStatePagerAdapter
- ¿Dónde está getChildFragmentManager en la biblioteca de soporte v13?
- Fragmento o fragmento de soporte?
Como se mencionó anteriormente por StackOverflowed esto es un problema intermitente. He encontrado una manera de arreglar esto escribiendo mi propio código para eliminar cualquier fragmento existente antes de comprometer uno nuevo. A continuación se muestra mi código:
fragmentManager = getFragmentManager(); ft = fragmentManager.beginTransaction(); mbFragment = new SettingsManageBooksFragment(); ft.replace(R.id.setting_detail_container2, mbFragment).commit(); mImgFragmentTitle.setImageResource(R.drawable.manage_my_books); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.imageButtonSettingsManageBooks: if (mPurchaseHistory == true) { ft.remove(phFragment); Log.d(TAG, "REMOVING PURCHASE HISTORY FRAG"); } else if (mAudio == true) { ft.remove(aFragment); Log.d(TAG, "REMOVING AUDIO FRAG"); } else if (mRestore == true) { ft.remove(rFragment); Log.d(TAG, "REMOVING RESTORE FRAG"); } else if (mCopyright == true) { ft.remove(cFragment); Log.d(TAG, "REMOVING COPYRIGHT FRAG"); } else if (mAbout == true) { ft.remove(abFragment); Log.d(TAG, "REMOVING ABOUT FRAG"); } ft = fragmentManager.beginTransaction(); mbFragment = new SettingsManageBooksFragment(); ft.replace(R.id.setting_detail_container2, mbFragment).commit(); mImgFragmentTitle.setImageResource(R.drawable.manage_my_books); mManageBooks = true; mPurchaseHistory = false; mAudio = false; mRestore = false; mCopyright = false; mAbout = false; break;