当前位置: 首页 > 知识库问答 >
问题:

Android:碎片重叠问题

越景天
2023-03-14

当我在选项卡之间切换并将片段附加到选项卡视图时,我面临着重叠片段的问题,下面是我的代码,请帮助

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) {

    }
}

共有3个答案

秦焱
2023-03-14

我可能很晚才回答这个问题。

注:

这个答案可能与上述问题无关,但希望对一些人有所帮助。

有时,当我们尝试使用不同类型的片段(即在少数片段中使用支持片段,而在其他片段中使用正常片段)时,会出现片段重叠问题

最近我在导航抽屉里遇到了同样的问题。我错误地使用了“import android.support.v4.app.Fragment在一个片段中,使用“import android.app.fragment在其他几个片段中。

希望这对某人有帮助。。

凌轶
2023-03-14

设置片段背景色并不是一个解决方案,因为片段仍然在活动堆栈中,这可能会消耗内存。

解决方案是在添加任何新片段之前从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();
}
葛浩阔
2023-03-14

只需为您的设置背景颜色

解决了这个问题。

 类似资料:
  • 我已经在我的项目中添加了一个导航抽屉活动,并尝试将项目作为片段添加。这就是我在主要活动中所做的。 默认片段是Home,它工作正常,正如预期的那样,但其他片段与Home片段重叠。(HomeFragment是唯一工作正常的)。我在每个片段类中都做过这样的事情: 我看不出错误在哪里。一切看起来都很好,但所有其他片段都显示在HomeFragment上。

  • 我可以使用一个片段作为一个活动吗?我已经创建了一个片段,但我希望它有像活动一样的功能,所以我使用片段扩展碎片活动。然而,我有一个带有碎片的导航抽屉。当我更改为“扩展碎片活动”时,我的代码有问题?请给我指路。

  • 当我将一个片段(它是带有背景的全屏)显示在另一个片段(我们称之为main)上时,我的main片段仍然会对单击做出反应(即使我们没有看到按钮,我们也可以单击它)。 问题:如何防止点击第一(主)片段?

  • 对不起,我的英语不好。我如何并排显示片段,这样当用户点击片段a中的一个按钮时,片段B就显示出来了(80%)?

  • 这似乎是一个具有挑战性的动画,但我有一种感觉,这可以很容易地完成。我正在尝试实现如下所示的片段之间的动画(请参阅第二和第三象限) 进入和退出并不难,但是预显示下一张和上一张卡片的屏幕以及无缝切换到下一张卡片超出了我的知识范围。如果有人制作过类似的动画,请给我一些指点。 编辑 Android的官方文档在点击时过渡,即当用户点击页面缩小以显示最后一页和上一页时,滑动将其移动到下一页。我的要求是将页面保

  • 问题内容: 我今天只是在学习片段。我按下一个按钮,它添加/删除了一个片段。但是,如果我尝试删除该片段,那么除了要删除的片段之外,每个片段都会被删除,为什么?第一次按正确添加一个片段。 我在xml中有两个这样的片段:当我单击按钮时,我希望添加未在xml中定义的片段,而确实是。但是,下次我按下按钮时,应该删除该片段。除该片段外,所有内容均被删除。 问题答案: 您无法删除使用XML添加的。如果要通过该方