——Fragmentation
【若对该知识点有更多想了解的,欢迎私信博主~~】
dependencies中添加(注入依赖)
implementation keyword:fragmentation:1.3.6'
implementation keyword:fragmentation-swipeback:1.3.6'
可创建悬浮球在开发得时候查看栈
创建Application
public class App extends Application {@Overridepublic void onCreate() {Create();// 设置 栈视图 模式为 (默认)悬浮球模式 // SHAKE: 摇一摇唤出 NONE:隐藏, 仅在Debug环境生效Fragmentation.builder().stackViewMode(Fragmentation.BUBBLE).debug(BuildConfig.DEBUG).install();}
}
在AndroidManifest添加全局配置
android:name=".App"
基本配置
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());}
}
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);}
}
需要传参的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"))//操作传值}
}
关于Activity启动Fragment
启动
loadRootFragment(R.id.fl, wInstance());
启动+传值
Bundle bundle = new Bundle();
bundle.putString("message", "Hello World");
loadRootFragment(R.id.fl, wInstance(bundle));
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);
关于Fragment启动Fragment
从A到B
//Fragment2
wInstance());//参数2,设置启动Fragment模式,同Activity的四种启动模式,默认SINGLETASK
从A到B,关掉A
wInstance());
从A到B,并给B传值
Bundle bundle = new Bundle();
bundle.putString("message", "Hello World");
wInstance(bundle));
从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
返回键
//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小时内删除。
留言与评论(共有 0 条评论) |