• Fragment之间通过add切换时的显示与隐藏


    新手,不知道用什么方法实现 ,通过动态的方法显示了Fragment   A,在这个里面点击列表项时add方法动态加载Fragment  B,但是两者都会一起显示,重叠在一起了,如果用replace方法,那么返回时原来的A内容就变化了,不是用户点击以前的了。个人的想法时在加载B时在B中隐藏A,当B退出时再把A显示出来,经过实践,效果还行。

    1. 创建A时,使用tag,方便在B中找到它。

     if (fragtwo==null){
         fragtwo=new twoFragment();
         FT.add(R.id.layFrame,fragtwo,"FA");
    }else{
         FT.show(fragtwo);
    }
    

    在A中创建B.

     lv_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                   String url= filelist[position].toString();
                    FragmentManager Fm=getFragmentManager();
                    FragmentTransaction FT=Fm.beginTransaction();
                    Fragvideo=VideoFragment.newInstance(url);
                    FT.add(R.id.layFrame, Fragvideo,"FB");
                    FT.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
                    FT.addToBackStack(null);
                    FT.commit();
                }
            });
    

      

    在Fragment  B的 onCreateView中查找到A,然后隐藏起来,先定义一个Fragment,在不同的事件中使用。

    private Fragment Fm;
    
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            vi=inflater.inflate(R.layout.fragment_video, container, false);
            Fm=getFragmentManager().findFragmentByTag("Ftwo");
            getFragmentManager().beginTransaction().hide(Fm).commit();
    
    }
    

    在B中我是通过一个按钮来返回A的,在返回中让A显示出来,弹出B

     btn_fh.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    getFragmentManager().beginTransaction().show(Fm).commit();
                   getFragmentManager().popBackStack();
                   // getActivity().onBackPressed();
                }
     });
    

    不知道方法对不对,希望大神提供更好的方法,我是小白,代码太复杂了看不懂。

      

  • 相关阅读:
    PHP 指定的 CGI 应用程序由于未返回完整的一组 HTTP 头而产生错误行为。
    BPM触发事件
    封装继承多态到底讲的是什么
    .Net 为什么叫.Net 转载自 jerrylsxu 的博客
    C# 琐碎记忆 Message
    SQL Case
    C# 命名规范(部分)
    C# 反射
    C# 日志 log 配置文件
    C# 琐碎记忆 三元表达式
  • 原文地址:https://www.cnblogs.com/wjbych/p/7227212.html
Copyright © 2020-2023  润新知