目录
1.Fragment
当前的Activity中包含多个fragment
2.生命周期
Fragment并不能单独使用,需要嵌套在Activity 中使用,且生命周期会受到Activity的影响
3.两种加载方式
1.静态加载fragment
- 定义自己的fragment继承Fragment
- 定义自己的fragment布局文件
- 在需要启动的activity中添加fragment标签
- 在需要启动的activity中编写代码
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
class ListFragment : Fragment() {
lateinit var argments: Bundle
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view=inflater.inflate(R.layout.fragment_list,container,false)
return view
}
}
定义布局文件fragment_list
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView"
android:layout_width="153dp"
android:layout_height="81dp"
android:text="List Fragment"
tools:layout_editor_absoluteX="129dp"
tools:layout_editor_absoluteY="218dp"
tools:ignore="MissingConstraints" />
</androidx.constraintlayout.widget.ConstraintLayout>
在需要加载Fragment的Activity对应的布局文件中添加fragment的标签
<fragment
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/fa"
android:name="com.example.xiaoxiaole.ListFragment"
/>
2.动态加载fragment
自己的fragment文件和布局文件和上面是一样的,主要不一样的是activity_main.xml文件,在这里是添加了FrameLayout标签
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- android:background="@color/purple_200"设置文本的背景色
android:gravity="center_horizontal" // 文本中的文字对齐方式
android:paddingTop="100dp" // 文本的上边内间距
android:text="layout_gravity:center" // 现实的文本内容
android:textSize="30dp" /> // 文本字号大小-->
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
MainActivity代码:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val listFragment = ListFragment()
val bundle = Bundle()
//bundle.putInt("key_int",100)//通过bundle传递数据
listFragment.argments= bundle
val ft = supportFragmentManager.beginTransaction()
ft.replace(R.id.container, listFragment)
//ft.show(listFragment)
ft.commit()
}