Fragment类似于Activity,可以插在Activity中:
想要运行用Fragment需要下面几个文件的设置:
- BlankFragment.java(用于实现Fragment的逻辑文件)
- MainActivity.java(用于实现被嵌入的Activity的逻辑文件)
- activity_main.xml(用于被嵌入的Activity的布局文件)
- fragment_blank.xml(Fragment的布局文件)
BlankFragment.java
package com.example.fragment;
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 BlankFragment extends Fragment {
private View root;
private TextView textview;
private Button button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
//创建Fragemnt视图的方法
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (root == null){
//获得布局文件
root = inflater.inflate((R.layout.fragment_blank),container, false);
}
//这个部分是用于设置Fragemnt布局文件中控件的点击反应的*********************************************
textview = root.findViewById(R.id.tv);
button = root.findViewById(R.id.but);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
textview.setText("修改");
}
});
//******************************************
//返回设置完成的View文件用于显示
return root;
}
}
MainActivity.java
package com.example.fragment;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<fragment
android:name="com.example.fragment.BlankFragment"(这个重要没有会报错)
android:layout_width="200dp"
android:layout_height="400dp"
android:layout_gravity="center_horizontal"
android:id="@+id/fg"(必须有id不然无法使用)/>
</LinearLayout>
fragment_blank.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical">
<!-- TODO: Update blank fragment layout -->
<TextView
android:id="@+id/tv"
android:layout_width="200dp"
android:layout_height="200dp"
android:text="@string/hello_blank_fragment" />
<Button
android:text="点击"
android:layout_width="200dp"
android:layout_height="200dp"
android:id="@+id/but"/>
</LinearLayout>