java - Android replace Fragment时的问题

 超级冷笑话驿站料_663 发布于 2022-10-28 08:39

【目的】
通过点击左侧侧滑栏的三个按钮,分别用不同的Fragment替换当前的Fragment

【代码】

public void leftMenuFragmentOnClickEvent(int id) {
        DrawerLayout drawer_layout = (DrawerLayout) findViewById(R.id.drawer_layout);
        switch (id){
            case R.id.btn_one:
                TabsFragment newFragment;
                newFragment = (TabsFragment) fm.findFragmentById(R.id.content_frame);
                fm.beginTransaction().replace(R.id.content_frame,newFragment).commit();
                drawer_layout.closeDrawer(GravityCompat.START);
                break;
            case R.id.btn_two:
                TabsFragment newFragment2 = new TabsFragment();
                fm.beginTransaction().replace(R.id.content_frame,newFragment2).commit();
                drawer_layout.closeDrawer(GravityCompat.START);
                break;
            case R.id.btn_three:
                AnotherTabsFragment anotherTabsFragment = new AnotherTabsFragment();
                fm.beginTransaction().replace(R.id.content_frame,anotherTabsFragment).commit();
                drawer_layout.closeDrawer(GravityCompat.START);
                break;
        }
    }

【问题】

图一是点击第二个按钮前的正常界面。
图二是点击第二个按钮后的界面,上面的Tag不见了。为什么?

【补充】
如果btn_two的点击处理和btn_one一样没有任何问题,但是btn_three使用的是另一种fragment,这时如果还使用完全一样的代码,就会出现cannot be cast to fragment.AnotherTabsFragment 的错误。

2 个回答
  • 你是把你Activity的界面分成上下2个部分,上面放3个tag,下面用来显示fragment的?

    2022-10-29 12:59 回答
  • 你应该是把tag也放进要替换的布局里面了,注意把tag独立出来

    2022-10-29 13:08 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有