android的fragment笔记,引入一个fragment或者是两个
什么是fragment?
- fragment是从android3.0开始的api
- 依赖于activity不可以独立存在
- 可以理解为一个activity中的一个小的可视化,可控制的view组件(但它又不是组件,是android的api)
引入一个fragment
在java中新建fragment应该是:
而不是直接新建一个java类
下面一个例子是使用一个fragment的例子:
文件目录:
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
fragment_blank.xml:
<?xml version="1.0" encoding="utf-8"?>
BlankFragment.java:
package com.example.myfragment;
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;
// TODO: Rename parameter arguments, choose names that match
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (root == null) {
root = inflater.inflate(R.layout.fragment_blank, container, false);
}
textView = root.findViewById(R.id.textview);
button = root.findViewById(R.id.btn);
// 模拟点击事件
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
textView.setText("I'm fine.");
}
});
return root;
}
}
MainActivity.java:
package com.example.myfragment;
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);
}
}
运行:
引入两个fragmetn:
只用修改部分文件:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
BlankFragment2.java:
package com.example.myfragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import androidx.fragment.app.Fragment;
public class BlankFragment2 extends Fragment {
private View root;
private TextView textView;
private Button button;
// TODO: Rename parameter arguments, choose names that match
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (root == null) {
root = inflater.inflate(R.layout.fragment_blank, container, false);
}
textView = root.findViewById(R.id.textview);
button = root.findViewById(R.id.btn);
// 模拟点击事件
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
textView.setText("I'm fine.");
}
});
return root;
}
}
即可完成