【Android开发

阅读: 评论:0

【Android开发

【Android开发

Android笔记

​ ——Fragmentation
若对该知识点有更多想了解的,欢迎私信博主~~

依赖框架:Fragmentation
一:优势及作用
  1. 封装了很多好用的方法
  2. 解决了一些官方Fragment库中存在的一些Bug
二:Fragmentation的配置
  1. dependencies中添加(注入依赖)

    implementation &#keyword:fragmentation:1.3.6'
    implementation &#keyword:fragmentation-swipeback:1.3.6'
    
三:使用
  1. 可创建悬浮球在开发得时候查看栈

    1. 创建Application

      public class App extends Application {@Overridepublic void onCreate() {Create();// 设置 栈视图 模式为 (默认)悬浮球模式   //	SHAKE: 摇一摇唤出  NONE:隐藏, 仅在Debug环境生效Fragmentation.builder().stackViewMode(Fragmentation.BUBBLE).debug(BuildConfig.DEBUG).install();}
      }
      
    2. 在AndroidManifest添加全局配置

      android:name=".App"
      
  2. 基本配置

    1. Activity 必须继承SupportActivity

      @Override
      protected void onCreate(Bundle savedInstanceState) {Create(savedInstanceState);setContentView(R.layout.activity_main);initView();//绑定控件//首次加载,如果当前Activity没有Fragment1,则创建一个if (findFragment(Fragment1.class) == null) {loadRootFragment(R.id.fl, wInstance());//设置全局的Fragment切换样式//DefaultNoAnimator 无切换样式//DefaultHorizontalAnimator 横向切换//DefaultVerticalAnimator 总想切换setFragmentAnimator(new DefaultHorizontalAnimator());}
      }
      
    2. Fragment 必须继承SupportFragment

      public class Fragment1 extends SupportFragment {public static Fragment1 newInstance() {return new Fragment1();}@Nullable@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {return inflater.inflate(R.layout.fm1, null);}
      }
      
    3. 需要传参的Fragment

      public class Fragment2 extends SupportFragment {//关键代码public static Fragment2 newInstance(Bundle args) {Fragment2 fragment = new Fragment2();fragment.setArguments(args);return fragment;}@Nullable@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {return inflater.inflate(R.layout.fm2, null);}@Overridepublic void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {ViewCreated(view, savedInstanceState);Log.e("aaa","message:"+getArguments().getString("message", "No word"))//操作传值}
      }
      
  3. 关于Activity启动Fragment

    1. 启动

      loadRootFragment(R.id.fl, wInstance());
      
    2. 启动+传值

      Bundle bundle = new Bundle();
      bundle.putString("message", "Hello World");
      loadRootFragment(R.id.fl, wInstance(bundle));
      
    3. Fragment已启动但要传参

      //Fragment2中添加
      @Override
      public void onNewBundle(Bundle args) {NewBundle(args);Log.e("aaa","message:"+getArguments().getString("message", "No word"))//操作传值
      }
      //Activity传值
      Fragment2 fragment=findFragment(Fragment2.class);
      NewBundle(bundle);
      
  4. 关于Fragment启动Fragment

    1. 从A到B

      //Fragment2
      wInstance());//参数2,设置启动Fragment模式,同Activity的四种启动模式,默认SINGLETASK
      
    2. 从A到B,关掉A

      wInstance());
      
    3. 从A到B,并给B传值

      Bundle bundle = new Bundle();
      bundle.putString("message", "Hello World");
      wInstance(bundle));
      
    4. 从A到B,B返回值给A

      //Fragment1启动Fragment2
      Bundle bundle = new Bundle();
      bundle.putString("message", "Hello World");
      wInstance(bundle),1);//Fragment1写接收方法
      @Override
      public void onFragmentResult(int requestCode, int resultCode, Bundle data) {FragmentResult(requestCode, resultCode, data);if (requestCode==1 && resultCode==RESULT_OK && data!=null){Log.e("aaa","data:"&#String("msg"));}
      }//Fragment2写传值方法
      Bundle bundle=new Bundle();
      bundle.putString("msg","Hello fm1");
      setFragmentResult(RESULT_OK,bundle);//当点击手机的返回键,就会触发Fragment1的onFragmentResult
      
  5. 返回键

    //Activity中
    @Override
    public void onBackPressedSupport() {int count = getSupportFragmentManager().getBackStackEntryCount();if (count == 0){BackPressedSupport();//默认返回键规则}else {getSupportFragmentManager().popBackStack();//将栈顶Fragment移除}
    }
    
参考资料:

本文发布于:2024-02-03 04:38:11,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170690629148699.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:Android
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23