说明
- 3.0版本后引入,即minSdk要大于11
- Fragment依赖于Activity,Fragment一般嵌套在Activity,其生命周期受Activity的生命周期影响
- 创建Fragment时至少需要实现三个方法:onCreate( ),onCreateView( ),OnPause( ),但是实际只有一个onCreateView()就可以,返回view。
静态加载Fragment
步骤
1、创建Fragment的xml布局文件
res/layout/fragement_itm_blank.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
tools:context=".FragementItmBlank">
<TextView
android:id="@+id/tv_fra_itm_one"
android:text="@string/hello_blank_fragment"
android:textSize="26sp"
android:layout_width="match_parent"
android:layout_height="100dp"
/>
<Button
android:id="@+id/btn_fra_itm_one"
android:text="click"
android:textColor="@color/red"
android:layout_width="match_parent"
android:layout_height="40dp"
/>
</LinearLayout>
2、定义Fragment类
java/com/pha/first/FragementItmBlank.java
- 继承Fragment
- 重写onCreateView();其他的可以不重写,但是这个必须得重写
package com.pha.first;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
public class FragementItmBlank extends Fragment {
private View root;
private TextView textView;
private Button btn_fra_itm_one;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if(root == null) {
root = inflater.inflate(R.layout.fragement_itm_blank, container, false);
}
textView = root.findViewById(R.id.tv_fra_itm_one);
btn_fra_itm_one = root.findViewById(R.id.btn_fra_itm_one);
btn_fra_itm_one.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
textView.setText("初次认识,请多指教!");
}
});
return root;
}
}
3、在主布局main的xml加载Fragment
- 在主main的xml布局文件中调用,用fragment 的属性 android:name=“com.pha.first.FragementItmBlank”
res/layout/fragement_itm_blank.xml 代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".FragmentMainActivity">
<fragment
android:id="@+id/fra_one"
android:name="com.pha.first.FragementItmBlank"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
3、在主布局的类中正常加载布局文件就好了
package com.pha.first;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class FragmentMainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fragment_main);
}
}