我不是罗大锤我不是罗大锤

我不是罗大锤

我不是罗大锤我不是罗大锤

我不是罗大锤

首页首页
分类分类
标签标签
友情链接友情
日记日记
开发中
博客仍在开发中。
Powered byNola
Fragment 简单用法Fragment 简单用法

Fragment 简单用法

&Android

允许评论

3 年前

一到四节演示一个简单例子,在 Activity 中添加两个 Fragment 来平分 Activity 左右空间。

一、新建左Fragment(left_fragment.xml)

<LinearLayout...>
    <Button.../>
</LinearLayout>

二、新建右Fragment(right_fragment.xml)

<LinearLayout...>
    <TextView.../>
</LinearLayout>

三、新建LeftFragment类

class LeftFragment: Fragment() {
    override fun onCreateView(inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?) : View? {
        return inflater.inflate(R.layout.left_fragment,container,false)
    }
}

四、在activity_main.xml 中添加左右 Fragment

<LinearLayout android:orientation = "horizontal" ...>
    <fragment
        android:name = "com.example.fragmenttest.LeftFragment"
        android:layout_width = "0dp"
        android:layout_height ="match_parent"
        android:layout_weight = "1" 
        />
    <fragment
         android:name = "com.example.fragmenttest.RightFragment"
        android:layout_width = "0dp"
        android:layout_height ="match_parent"
        android:layout_weight = "1" 
        />
</LinearLayout>

运行软件后可以看到两个Fragment平分左右页面

五、动态添加 Fragment

<!-- 将上节中右Fragment代码修改为如下所示 -->
<FragmentLayout
    android:id = "@+id/rightLayout"
    android:layout_width = "0dp"
    android:layout_height ="match_parent"
    android:layout_weight = "1" 
    /> 
// Kotlin
// 这里将动态修改Fragment的代码封装成一个方法
// 形参fragment就是要动态切换的Fragment布局对象
private fun replaceFragment(fragment: Fragment){
    val fragmentManager = supportFragmentManager
    val transaction = fragmentManager.beginTransaction()
    transaction.replace(R.id.rightLayout,fragment)
    // 将fragment添加到返回栈,这样用户返回不会直接退出软件(非必须)
    transaction.addToBackStack(null)
    transaction.commit()
}

六、在 Fragment 与 Activity 中互相获取对方实例

// 在Activity中获取fragment实例
val fragment = supportFragmentManager.findFragmentById(R.id.leftFragment) as LeftFragment 
// 在Fragment中获取Activity实例
if(activity != null) {
    val mainActivity = activity as MainActivity
}

七、Fragment 生命周期

  1. 运行状态: 关联的 Activity 运行时,该 Fragment 也处于运行状态。

  2. 暂停状态: Activity 暂停/未占满屏幕/Activity 到栈顶,Fragment 也会处于暂停状态。

  3. 停止状态: Activity 停止/在调用 remove()、replace() 前已经入栈,Fragment 进入停止状态。

  4. 销毁状态: Activity 销毁/在调用 remove()、replace() 前未入栈,Fragment 销毁。 Fragment简单用法_1.png

  5. onAttach():当 Fragment 与 Activity 建立关联时。

  6. onCreateView():Fragment 创建视图/加载布局时调用。

  7. onActivityCreated():Fragment 关联的 Activity 创建完毕时调用。

  8. onDestroyView():与 Fragment 关联视图被移除时调用。

  9. onDeath():Fragment 与 Activity 解除关联时调用。

目录
一、新建左Fragment(left_fragment.xml)
二、新建右Fragment(right_fragment.xml)
三、新建LeftFragment类
四、在activity_main.xml 中添加左右 Fragment
五、动态添加 Fragment
六、在 Fragment 与 Activity 中互相获取对方实例
七、Fragment 生命周期
暂无评论