有时片段切换标签时重叠 [英] Fragment overlaps sometimes when switching tabs
问题描述
我有我的左边按钮的双窗口的布局。当按钮是pressed其相应的片段中显示在右侧。有时碎片重叠,但是这是一个间歇性问题。我不能复制它所有的时间,但它确实发生了。
I have a two pane layout with my buttons on the left. When a button is pressed its corresponding fragment is displayed on the right. Sometimes the fragments overlap but this is an intermittent issue. I can't replicate it all the time but it does happen
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;
它看起来像,因为我有可能会造成重叠问题的新片段替换每个片段。有没有一种方法来清除所有的片段提交一个新的前?
It looks like because I am replacing each fragment with a new fragment that could be causing the overlap. Is there a way to clear all the fragments before committing a new one?
推荐答案
正如刚才StackOverflowed以上,这是一个间歇性问题。我发现写我自己的code提交一个新的之前删除任何现有的片段解决这个的一种方式。下面是我的code:
As mentioned by StackOverflowed above this is an intermittent issue. I found a way of fixing this by writing my own code to remove any existing fragments before committing a new one. Below is my code:
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;
这篇关于有时片段切换标签时重叠的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!