Fragment
Posted xiaogao128
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Fragment相关的知识,希望对你有一定的参考价值。
Fragment是依赖于Activity的,不能独立存在的。
一个Activity里可以有多个Fragment。
一个Fragment可以被多个Activity重用。
Fragment有自己的生命周期,并能接收输入事件。
我们能在Activity运行时动态地添加或删除Fragment。
Fragment的优势有以下几点:
模块化(Modularity):我们不必把所有代码全部写在Activity中,而是把代码写在各自的Fragment中。
可重用(Reusability):多个Activity可以重用一个Fragment。
可适配(Adaptability):根据硬件的屏幕尺寸、屏幕方向,能够方便地实现不同的布局,这样用户体验更好。
通过Fragment.newInstance()方法可实现对Fragment的构造方法。
public static AFragment newInstance(String s) {
Bundle args = new Bundle();
args.putString("title",s);
AFragment fragment = new AFragment();
fragment.setArguments(args);
return fragment;
}
通过getArguments可调用该方法传来的参数
通过hide+add方法可解决返回栈中replace方法对原Fragment的销毁重构
Fragment fragment=getActivity().getSupportFragmentManager().findFragmentByTag("a");
if (getActivity().getSupportFragmentManager().findFragmentByTag("a")!=null){
getActivity().getSupportFragmentManager().beginTransaction().hide(fragment).add(R.id.frame,new BFragment()).addToBackStack(null).commitAllowingStateLoss();
}else
getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.frame,new BFragment()).addToBackStack(null).commitAllowingStateLoss();
}
Fragment向Activity的信息传递推荐使用接口实现
public interface OnClick{
void onClick(String text);
}
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
onClick=(OnClick)context;
}
以上是关于Fragment的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin基础从入门到进阶系列讲解(基础篇)Fragment的基本使用