今天查看android官网,发现fragment用法有一些变化,记录一下
1.fragment在androidx中是一个单独依赖的库
implementation "androidx.fragment:fragment:1.2.5"
2.现在使用FragmentContainerView而不再是framelayout
<androidx.fragment.app.FragmentContainerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.example.ExampleFragment" />
3.在fragment初始化的时候传值
<androidx.fragment.app.FragmentContainerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Bundle bundle = new Bundle();
bundle.putInt("some_int", 0);
getSupportFragmentManager().beginTransaction()
//true 可优化事务中涉及的 Fragment 的状态变化,以使动画和过渡正常运行
.setReorderingAllowed(true)
.add(R.id.fragment_container_view, ExampleFragment.class, bundle)
.commit();
class ExampleFragment extends Fragment {
public ExampleFragment() {
super(R.layout.example_fragment);
}
@Override
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
int someInt = requireArguments().getInt("some_int");
...
}
}
参考地址:https://developer.android.google.cn/guide/fragments/create
网友评论