当前位置: 首页 > news >正文

网站管理规定青海住房和城乡建设部网站

网站管理规定,青海住房和城乡建设部网站,办公室装修合同范本,网架公司推荐Android 中 Fragment 的使用指南 Fragment 是 Android 应用开发中的重要组件,它代表 Activity 中的一部分 UI 或行为,可以组合多个 Fragment 在一个 Activity 中构建多窗格 UI,并在不同 Activity 中重复使用某个 Fragment。 基本概念 Frag…

Android 中 Fragment 的使用指南

Fragment 是 Android 应用开发中的重要组件,它代表 Activity 中的一部分 UI 或行为,可以组合多个 Fragment 在一个 Activity 中构建多窗格 UI,并在不同 Activity 中重复使用某个 Fragment。

基本概念

Fragment 具有自己的生命周期,但依赖于宿主 Activity 的生命周期。每个 Fragment 都有自己的布局和行为。

创建 Fragment

1. 定义 Fragment 类

public class MyFragment extends Fragment {@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// 膨胀 fragment 的布局return inflater.inflate(R.layout.fragment_my, container, false);}@Overridepublic void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {super.onViewCreated(view, savedInstanceState);// 在这里初始化视图和逻辑}
}

2. 创建 Fragment 的布局文件 (res/layout/fragment_my.xml)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello Fragment!" /></LinearLayout>

添加 Fragment 到 Activity

方式1: 在 XML 布局中添加 (静态方式,不推荐)

<!-- activity_main.xml -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><fragmentandroid:id="@+id/myFragment"android:name="com.example.MyFragment"android:layout_width="match_parent"android:layout_height="match_parent" /></LinearLayout>

方式2: 在代码中动态添加 (推荐)

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 检查是否已经添加了Fragment(防止旋转时重复添加)if (savedInstanceState == null) {// 创建Fragment实例MyFragment fragment = new MyFragment();// 开始Fragment事务getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, fragment) // 添加到容器.commit();}}
}

对应的 activity_main.xml 需要有一个容器:

<FrameLayoutandroid:id="@+id/fragment_container"android:layout_width="match_parent"android:layout_height="match_parent" />

Fragment 事务

可以执行添加、移除、替换等操作:

// 替换Fragment
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new AnotherFragment()).addToBackStack(null) // 允许用户按返回键返回上一个Fragment.commit();

Fragment 生命周期

Fragment 的生命周期方法:

  1. onAttach() - Fragment 与 Activity 关联时调用
  2. onCreate() - Fragment 创建时调用
  3. onCreateView() - 创建 Fragment 的视图层次结构
  4. onActivityCreated() - Activity 的 onCreate() 完成后调用
  5. onStart() - Fragment 可见时调用
  6. onResume() - Fragment 可交互时调用
  7. onPause() - Fragment 不再可交互时调用
  8. onStop() - Fragment 不可见时调用
  9. onDestroyView() - Fragment 的视图被移除时调用
  10. onDestroy() - Fragment 不再使用时调用
  11. onDetach() - Fragment 与 Activity 解除关联时调用

Fragment 与 Activity 通信

1. Fragment 调用 Activity 方法

// 在Fragment中
if (getActivity() instanceof MyActivityInterface) {((MyActivityInterface) getActivity()).doSomething();
}// Activity实现接口
public interface MyActivityInterface {void doSomething();
}

2. Activity 调用 Fragment 方法

MyFragment fragment = (MyFragment) getSupportFragmentManager().findFragmentById(R.id.my_fragment);
if (fragment != null) {fragment.doSomethingInFragment();
}

3. 使用 ViewModel 共享数据 (推荐)

// 创建共享ViewModel
public class SharedViewModel extends ViewModel {private final MutableLiveData<String> selected = new MutableLiveData<>();public void select(String item) {selected.setValue(item);}public LiveData<String> getSelected() {return selected;}
}// 在Activity或Fragment中获取
SharedViewModel model = new ViewModelProvider(requireActivity()).get(SharedViewModel.class);
model.getSelected().observe(this, item -> {// 更新UI
});

最佳实践

  1. 使用 androidx.fragment.app 包中的 Fragment(支持库版本)
  2. 避免在 Fragment 中直接持有 Activity 的引用
  3. 使用接口进行 Fragment 与 Activity 的通信
  4. 考虑使用 ViewModel 和 LiveData 进行数据共享
  5. 合理使用 addToBackStack() 管理返回栈
  6. 为 Fragment 添加标签,便于查找:.add(R.id.container, fragment, "TAG")

高级用法

1. Fragment 参数传递

// 创建Fragment时传递参数
public static MyFragment newInstance(String param) {MyFragment fragment = new MyFragment();Bundle args = new Bundle();args.putString("key", param);fragment.setArguments(args);return fragment;
}// 在Fragment中获取参数
@Override
public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);if (getArguments() != null) {String param = getArguments().getString("key");}
}

2. 使用 Navigation 组件管理 Fragment

// 在build.gradle中添加依赖
implementation "androidx.navigation:navigation-fragment:2.3.5"// 使用NavController导航
NavController navController = Navigation.findNavController(view);
navController.navigate(R.id.action_to_next_fragment);
http://www.dtcms.com/a/493813.html

相关文章:

  • 南宁横县网站建设推广wordpress的搭建
  • php网站开发背景介绍wordpress just
  • 合肥网站建设q479185700強网站会员系统方案
  • 宋家庄网站建设微网站建设及微信推广方案
  • 长尾关键词挖掘网站wordpress淘客 优惠券插件
  • 松山湖网站建设html网页代码完整代码
  • 建设自己的网站需要哪些步骤怎么做五合一网站
  • 傻瓜式网站开发软件成都网站建设 致尚
  • 国外免费域名网站wordpress怎么加速权限不够
  • 博罗网站设计公司校园网站建设详细的设计方案
  • 盐城专业做网站较好的公司包装设计公司浙江
  • 写作网站都有哪些网站策划及过程
  • 做用户名验证的网站服务器wordpress 带数据库吗
  • 如何编写一套网站模板三明网站设计
  • 跑步机网站建设思维导图免费建站平台排行榜
  • 印尼做网站的教学 中文wordpress archive插件
  • 广州市外贸网站建设珠海建网站的联系方式
  • 做任务领取礼品的网站ui特效网站
  • 如何制作h5做网站网站策划编辑如何做
  • 网站建设的商业阶段网站建设的平面设计
  • 网站开发多少工资ui培训班排行榜
  • 广州网站制作知名 乐云践新淘宝客网站备案号
  • wordpress购物网站seo网络优化软件
  • 深圳自适应网站设计陕西锦宇建设有限公司网站
  • 网站推广与seo的区别建设银行临江支行网站
  • 郑州网站建设选智巢郑州专业网站推广优化公司
  • dz网站模板 首页显示内容百度在西安的公司叫什么
  • 基于jsp的网站开发的文献seo研究所
  • 个人网站可以备案几个怎么在网站添加关键词
  • wordpress设置阅读权限福州短视频seo网站