一、什么是FragmentManager

FragmentManager是管理应用程序中的Fragment对象的管理器

二、如何使用FragmentManager

public class IndexActivity extends AppCompatActivity {
	protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_index);
		// 获取FragmentManager
        FragmentManager fragmentManager = getSupportFragmentManager();
		// 开启事物
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        HomeFragment fragment = new HomeFragment();
		// 添加、替换、显示、隐藏等Fragment对象的操作
        fragmentTransaction.replace(R.id.container, fragment);
		// 提交事物
        fragmentTransaction.commit();
    }
}

三、什么是Fragment回退栈

Fragment回退栈是Android中用来存储Fragment对象的栈

四、如何使用Fragment回退栈

public class IndexActivity extends AppCompatActivity {
	protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_index);
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        HomeFragment fragment = new HomeFragment();
		// 压栈 
		fragmentTransaction.replace(R.id.container, fragment) .addToBackStack(null);
		// 出栈
		fragmentManager.popBackStack();
		// 提交事物
        fragmentTransaction.commit();
    }
}

五、如何使用Activity与Fragment通信

  1. Fragment—布局
<FrameLayout 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:background="@android:color/holo_orange_light"
    tools:context=".chapter17.FragmentSetterGetter">

    <TextView
        android:id="@+id/tv_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:text="Hello" />

</FrameLayout>
  1. Fragment—Java代码
public class MyFragment extends Fragment {  
    private final String TAG = "--MyFragment--> ";  
    @Override  
    public void onAttach(Activity activity) {
        System.out.println(TAG + "onAttach");  
        super.onAttach(activity);  
    } 
    @Override  
    public void onCreate(Bundle savedInstanceState) {   
        System.out.println(TAG + "onCreate");  
        super.onCreate(savedInstanceState);  
    }  
    @Override  
    public View onCreateView(LayoutInflater inflater, ViewGroup container,  
            Bundle savedInstanceState) {   
        System.out.println(TAG + "onCreateView");  
        View view = inflater.inflate(R.layout.fragment, null);  
        return view;  
    }  
    … 
}
public class MyFragment extends Fragment {  
    …
    @Override  
    public void onActivityCreated(Bundle savedInstanceState) {  
	  System.out.println(TAG + "onActivityCreated");  
        super.onActivityCreated(savedInstanceState);  
    }  
    @Override  
    public void onStart() {  
	  System.out.println(TAG + "onStart");  
        super.onStart();  
    }  
    @Override  
    public void onResume() {  
	   System.out.println(TAG + "onResume");  
        super.onResume();  
    } 
    @Override  
    public void onPause() {  
	  System.out.println(TAG + "onPause");  
        super.onPause();  
    } 
} 
public class MyFragment extends Fragment {  
    …  
    @Override  
    public void onStop() {  
	  System.out.println(TAG + "onStop");  
        super.onStop();  
    }  
    @Override  
    public void onDestroyView() {  
	  System.out.println(TAG + "onDestroyView");  
        super.onDestroyView();  
    }  
    @Override  
    public void onDestroy() {  
	  System.out.println(TAG + "onDestroy");  
        super.onDestroy();  
    }  
    @Override  
    public void onDetach() {  
	  System.out.println(TAG + "onDetach");  
        super.onDetach();  
    }  
} 
     
  1. Activity—Java代码
public class IndexActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_index);
     }
}
  1. 关联切换
        fragment = new FragmentSetArgument();
        fragmentManager = getSupportFragmentManager();
        FragmentTransaction transaction = fragmentManager.beginTransaction();
        transaction.replace(R.id.fragment_container, fragment) .addToBackStack(null);
        transaction.commit();

  1. 查看效果
    Android开发之Fragment讲解

相关文章:

  • 2022-12-23
  • 2021-08-24
  • 2021-10-08
  • 2022-12-23
  • 2021-05-07
  • 2022-12-23
猜你喜欢
  • 2022-01-20
  • 2021-09-23
  • 2021-07-21
  • 2021-12-15
  • 2021-06-15
  • 2022-01-22
相关资源
相似解决方案