FragmentActivity.java
public class FragmentActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fragment);
// 视图点击事件
findViewById(R.id.textView).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 加载静态fragment
Intent intent = new Intent(FragmentActivity.this,StaticLoadFragmentActivity.class);
startActivity(intent);
}
});
}
}
activity_fragment.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="静态加载 fragment"
android:gravity="center"
/>
</LinearLayout>
StaticLoadFragementActivity.java
public class StaticLoadFragmentActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_static_load_fragment);
}
}
activity_statuc_load_fragment.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:id="@+id/listFragment"
android:layout_width="100dp"
android:layout_height="100dp"
android:name="com.example.testapplication.ListFragment"
/>
<fragment
android:id="@+id/detailFragment"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_centerInParent="true"
android:name="com.example.testapplication.ListFragment"
/>
</RelativeLayout>
/**
* 列表 fragment
**/
public class ListFragment extends Fragment {
// 生命周期
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
// 创建视图
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
// 新视图
View view = inflater.inflate(R.layout.fragment_list, container, false);
TextView textView = view.findViewById(R.id.textView2);
textView.setText("fragment静态加载");
return view;
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/teal_700"
>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:textColor="#FFFFFF"
android:textSize="20dp"
android:text="TextView"
/>
</RelativeLayout>
动态加载
activity_fragment.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="20dp"
android:text="静态加载 fragment" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/listContainer"
android:layout_width="150dp"
android:orientation="horizontal"
android:layout_margin="1dp"
android:layout_height="wrap_content">
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_margin="1dp"
android:id="@+id/detailContainer"
android:layout_width="200dp"
android:layout_height="wrap_content">
</LinearLayout>
</LinearLayout>
</LinearLayout>
// 动态加载
ListFragment fragment = new ListFragment();
getSupportFragmentManager().beginTransaction().add(R.id.listContainer,fragment).commit();
getSupportFragmentManager().beginTransaction().add(R.id.detailFragment,new ListFragment()).commit();
Fragment传值(难点)
// 传参
// activity ---> fragment value
getSupportFragmentManager().beginTransaction().add(R.id.listContainer,ListFragment.newInstance("list")).commit();
getSupportFragmentManager().beginTransaction().add(R.id.detailContainer,ListFragment.newInstance("detail")).commit();
**
* 列表 fragment
**/
public class ListFragment extends Fragment {
public static final String BUNDLE_TITLE = "bundle_title";
private String title ="title";
// 接收传参
public static ListFragment newInstance(String title){
ListFragment fragment = new ListFragment();
Bundle bundle = new Bundle();
bundle.putString(BUNDLE_TITLE,title); // 提取常量 ctrl + alt +c
fragment.setArguments(bundle);
return fragment;
}
// 生命周期
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(getArguments() != null){
title = getArguments().getString(BUNDLE_TITLE); // 提取变量 ctrl + alt +f
}
}
// 创建视图
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
// 新视图
View view = inflater.inflate(R.layout.fragment_list, container, false);
TextView textView = view.findViewById(R.id.textView2);
textView.setText(title);
return view;
}
package com.example.testapplication;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
/**
* 列表 fragment
**/
public class ListFragment extends Fragment {
public static final String BUNDLE_TITLE = "bundle_title";
private String title ="title";
// 接收传参
public static ListFragment newInstance(String title){
ListFragment fragment = new ListFragment();
Bundle bundle = new Bundle();
bundle.putString(BUNDLE_TITLE,title); // 提取常量 ctrl + alt +c
fragment.setArguments(bundle);
return fragment;
}
// 生命周期
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(getArguments() != null){
title = getArguments().getString(BUNDLE_TITLE); // 提取变量 ctrl + alt +f
}
}
// 创建视图
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
// 新视图
View view = inflater.inflate(R.layout.fragment_list, container, false);
TextView textView = view.findViewById(R.id.textView2);
textView.setText(title);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(mOnTitleClickListener != null){
mOnTitleClickListener.onClick(title);
}
}
});
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
// fragment 向 activity传参
// 设置set方法
public void setmOnTitleClickListener(onTitleClickLister mOnTitleClickListener) {
this.mOnTitleClickListener = mOnTitleClickListener;
}
// 定义变量
onTitleClickLister mOnTitleClickListener;
// 定义接口
public interface onTitleClickLister{
void onClick(String title);
}
}
package com.example.testapplication;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
public class FragmentActivity extends AppCompatActivity implements ListFragment.onTitleClickLister {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fragment);
// 视图点击事件
findViewById(R.id.textView).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 加载静态fragment
Intent intent = new Intent(FragmentActivity.this,StaticLoadFragmentActivity.class);
startActivity(intent);
}
});
// 动态加载
//ListFragment fragment = new ListFragment();
// getSupportFragmentManager().beginTransaction().add(R.id.listContainer,fragment).commit();
//getSupportFragmentManager().beginTransaction().add(R.id.detailContainer,new ListFragment()).commit();
// 传参
// activity ---> fragment value
ListFragment listFragment = ListFragment.newInstance("list");
getSupportFragmentManager().beginTransaction().add(R.id.listContainer,listFragment).commit();
listFragment.setmOnTitleClickListener(this);
getSupportFragmentManager().beginTransaction().add(R.id.detailContainer,ListFragment.newInstance("detail")).commit();
}
@Override
public void onClick(String title) {
setTitle(title);
}
}