兪丶 2015-10-22 04:34 采纳率: 0%
浏览 2800

fragment切换时,可以点击到之前页面上的按钮

fragment1上面有个按钮,fragment2上是空的,在fragment2页面点击按钮所在部位,就可以点进去,请问怎么修改

 //定义一个选中一个item后的处理
        public void setChioceItem(int index)
        {
                //重置选项+隐藏所有Fragment
                FragmentTransaction transaction = fManager.beginTransaction();  

                clearChioce();
                hideFragments(transaction);
                switch (index) {
                case 0:
                        ceshi_image.setImageResource(R.drawable.ceshitubiao2);  
                        ceshi_text.setTextColor(blue);
                        TextView tv = (TextView) findViewById(R.id.biaoti);
                        tv.setText("题目练习");
                        //course_layout.setBackgroundResource(R.drawable.ic_tabbar_bg_click);
            if (fg1 == null) {  
                // 如果fg1为空,则创建一个并添加到界面上  ic_tabbar_course_pressed
                fg1 = new Fragment1();  
                transaction.add(R.id.content, fg1);  
            } else {  
                // 如果MessageFragment不为空,则直接将它显示出来  
                transaction.show(fg1);  
            }  
            break;  

                case 1:
                        tongzhi_image.setImageResource(R.drawable.tongzhi2);  
                        tongzhi_text.setTextColor(blue);
                        tv = (TextView) findViewById(R.id.biaoti);
                        tv.setText("消息通知");
                        //found_layout.setBackgroundResource(R.drawable.ic_tabbar_bg_click);
            if (fg2 == null) {  
                // 如果fg2为空,则创建一个并添加到界面上  
                fg2 = new Fragment2();  
                transaction.add(R.id.content, fg2);  
            } else {  
                // 如果MessageFragment不为空,则直接将它显示出来  
                transaction.show(fg2);  
            }  
            break;      

                 case 2:
                        wo_image.setImageResource(R.drawable.wotubiao2);  
                        wo_text.setTextColor(blue);
                        //settings_layout.setBackgroundResource(R.drawable.ic_tabbar_bg_click);
                        tv = (TextView) findViewById(R.id.biaoti);
                        tv.setText("我");
            if (fg3 == null) {  
     //            如果fg3为空,则创建一个并添加到界面上  
                fg3 = new Fragment3();  
               transaction.add(R.id.content, fg3);  
            } else {  
                // 如果MessageFragment不为空,则直接将它显示出来  
                transaction.show(fg3);  
            }  
            break;                 
                }
                transaction.commit();
        }

        //隐藏所有的Fragment,避免fragment混乱
        private void hideFragments(FragmentTransaction transaction) {  
        if (fg1 != null) {  
            transaction.hide(fg1);  
        }  
        if (fg2 != null) {  
            transaction.hide(fg2);  
        }  
        if (fg3 != null) {  
            transaction.hide(fg3);  
        }  
    }  

图片说明
图片说明

  • 写回答

3条回答 默认 最新

  • stucture 2015-10-22 06:34
    关注

    很简单的问题,你点了按钮show出来的fragment实际上覆盖在前一个上面,R.id.content是FrameLayout。
    你只需要在show出来fragment之后,hide原来的就可以了,在同一个transaction里提交一下。

    评论

报告相同问题?

悬赏问题

  • ¥15 鸿业暖通修改详细负荷时闪退
  • ¥15 有偿求码,CNN+LSTM实现单通道脑电信号EEG的睡眠分期评估
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体