gir*_*ate 34 android overlapping android-fragments
当我在标签之间切换并将片段附加到下面的标签视图时,我面临着重叠片段的问题是我的代码请帮忙
public class FragmentManage extends Fragment implements ActionBar.TabListener {
private Fragment mFragment;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_manage, container, false);
OnClickListener clickListener = new OnClickListener() {
public void onClick(View v) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
switch(v.getId()) {
case R.id.imageBtnCategory:
if (mFragment == null){
mFragment = new FragmentCategory();
}
ft.replace(android.R.id.content, mFragment);
break;
case R.id.imageBtnManageKey:
if (mFragment == null){
mFragment = new FragmentKeys();
}
ft.replace(android.R.id.content, mFragment);
break;
case R.id.imageBtnChangePswd:
if (mFragment == null){
mFragment = new FragmentChangePwd();
}
ft.replace(android.R.id.content, mFragment);
break;
}
ft.commit();
}
};
ImageButton imageBtnCategory = (ImageButton) v.findViewById(R.id.imageBtnCategory);
ImageButton imageBtnManageKey = (ImageButton) v.findViewById(R.id.imageBtnManageKey);
ImageButton imageBtnChangePswd = (ImageButton) v.findViewById(R.id.imageBtnChangePswd);
imageBtnCategory.setOnClickListener(clickListener);
imageBtnManageKey.setOnClickListener(clickListener);
imageBtnChangePswd.setOnClickListener(clickListener);
return v;
}
public void onTabSelected(Tab tab, FragmentTransaction ft) {
mFragment = new FragmentManage();
ft.add(android.R.id.content, mFragment);
ft.attach(mFragment);
}
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
ft.remove(mFragment);
}
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}
}
Run Code Online (Sandbox Code Playgroud)
kvh*_*kvh 84
只需为您<fragment />的XML文件设置背景颜色即可.
解决了这个问题.
Ros*_*han 16
我可能很晚才回答这个问题.
注意:
这个答案可能与上述问题无关,但希望它对一些人有所帮助.
有时,当我们尝试使用不同类型的片段时(即在少数片段中使用支持片段和在其他片段中使用正常片段),会发生片段重叠问题
最近我在导航抽屉中面临同样的问题.错,我用" 进口android.support.v4.app.Fragment; "在一个片段,并用" 进口android.app.Fragment; "在其他几个片段.
希望这会对某人有所帮助..
Suf*_*ari 11
好吧设置片段背景颜色不是解决方案,因为片段仍然在活动堆栈中,这可能消耗内存.
解决方案是在添加任何新片段之前从framelayout中删除所有视图.
private void changeFragment(Fragment fr){
FrameLayout fl = (FrameLayout) findViewById(R.id.mainframe);
fl.removeAllViews();
FragmentTransaction transaction1 = getSupportFragmentManager().beginTransaction();
transaction1.add(R.id.mainframe, fr);
transaction1.commit();
}
Run Code Online (Sandbox Code Playgroud)
Sye*_*hdi 10
片段管理器维护所有先前片段的堆栈,有时后面的堆栈片段与我们替换的片段重叠,对我而言
fragmentManager.popBackStack();
Run Code Online (Sandbox Code Playgroud)
工作,我们也可以循环执行此操作以弹出堆栈中的所有片段希望它有所帮助,谢谢.快乐编码:)
这就是我修复它的方式..
仅当布局与填充屏幕匹配时,设置背景才会从屏幕上移除重叠效果
在 tab_selected 或 tab 更改操作上没有替换按钮点击时替换的新片段
以下代码为我修复了它
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
// This is required since button click replaces fragment whose link is lost hence overlapping isuee was occuring
ft.replace(android.R.id.content, mFragment);
// On Tab Change remove old fragment views
ft.remove(mFragment);
}
Run Code Online (Sandbox Code Playgroud)
我还面临片段重叠问题。这是我解决问题的方法。
addToBackStack,以便将其保留在堆栈中。 FirstFragment firstFragment = new FirstFragment();
getFragmentManager()
.beginTransaction()
.add(R.id.fragment_container, firstFragment)
.addToBackStack("first frag")
.commit();
Run Code Online (Sandbox Code Playgroud)
SecondFragment secondFragment = new SecondFragment();
getFragmentManager()
.beginTransaction()
.replace(R.id.fragment_container, secondFragment)
.addToBackStack("second frag")
.commit();
Run Code Online (Sandbox Code Playgroud)
public void onBackPressed() {
if(getFragmentManager().getBackStackEntryCount() <= 1) {
super.onBackPressed();
} else {
getFragmentManager().popBackStack();
}
}
Run Code Online (Sandbox Code Playgroud)
您检查过 XML 并查看主要布局是否为框架布局吗?如果没有,请改用框架布局。这将解决重叠问题。这是唯一的修复方法。我在寻找此问题的解决方案时尝试了“已接受”的答案,但它不起作用。
| 归档时间: |
|
| 查看次数: |
47187 次 |
| 最近记录: |