📜  Android Fragments(1)

📅  最后修改于: 2023-12-03 15:13:20.170000             🧑  作者: Mango

Android Fragments

Android Fragments 是 Android 应用程序中 UI 的一部分,它们允许在一个 Activity 中组合不同的 UI 组件并帮助设计大型屏幕应用程序,如平板电脑。

什么是 Fragment?

一个 Fragment 是一个可重复使用的 UI 组件,类似于 Activity,但是没有自己的生命周期。Fragment 必须依附于 Activity 才能工作。

一个应用程序可以包含许多 Fragment,它们可以将应用程序的不同部分分为更小、更易于管理的部分,并允许以更灵活的方式呈现 UI 元素。

Fragment 的生命周期

Fragment 在其生命周期中经历了多个阶段,这些阶段分别是:

  1. onAttach() - 将 Fragment 附加到其父 Activity 时调用。
  2. onCreate() - 创建 Fragment 时调用。
  3. onCreateView() - 创建 Fragment 视图时调用。
  4. onActivityCreated() - 确定与 Fragment 关联的 Activity 是否已经创建时调用。
  5. onStart() - 将 Fragment 在屏幕上显示时调用。
  6. onResume() - Fragment 变为活动状态时调用。
  7. onPause() - 另一个 Activity 变为活动状态时调用。
  8. onStop() - Fragment 不再可见时调用。
  9. onDestroyView() - 销毁 Fragment 视图时调用。
  10. onDestroy() - 销毁 Fragment 时调用。
  11. onDetach() - 从其父 Activity 分离时调用。
如何使用 Fragment?

在 Android 应用程序中使用 Fragment 的过程如下:

  1. 创建一个 Fragment。
  2. 在 Activity 代码中使用 FragmentManager 将 Fragment 添加到 Activity 中。
  3. 在 Fragment 中定义 UI 元素和 UI 管理代码。
  4. 在 Activity 中处理 Fragment 反馈和 Fragment 之间的交互。
1. 创建一个 Fragment

创建 Fragment 需要定义一个继承自 Fragment 的类,并重写其生命周期方法来实现 Fragment 的 UI 元素和 UI 管理代码。

public class ExampleFragment extends Fragment {
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
        // 创建 Fragment 视图
        View view = inflater.inflate(R.layout.fragment_example, container, false);
        // 返回 Fragment 视图
        return view;
    }
}
2. 将 Fragment 添加到 Activity 中

可以使用 FragmentManager 和 FragmentTransaction 将 Fragment 添加到 Activity 中。

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
ExampleFragment exampleFragment = new ExampleFragment();
transaction.add(R.id.fragment_container, exampleFragment);
transaction.commit();
3. 在 Fragment 中定义 UI 元素和 UI 管理代码

在 Fragment 中可以使用常规的 UI 元素和管理方法来定义 UI。

public class ExampleFragment extends Fragment {
    
    private Button button;
    private TextView textView;
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_example, container, false);
        
        button = view.findViewById(R.id.button);
        textView = view.findViewById(R.id.textview);
        
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                textView.setText("Button Clicked");
            }
        });
        
        return view;
    }
}
4. 在 Activity 中处理 Fragment 反馈和 Fragment 之间的交互。

Activity 可以获取 Fragment 视图中定义的 UI 元素并处理它们的事件。

public class MainActivity extends AppCompatActivity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        ExampleFragment exampleFragment = new ExampleFragment();
        transaction.add(R.id.fragment_container, exampleFragment);
        transaction.commit();
        
        // 处理 Fragment 中定义的按钮点击事件
        exampleFragment.getButton().setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "Button Clicked", Toast.LENGTH_SHORT).show();
            }
        });
    }
}
结论

Android Fragments 是 Android 应用程序中的常用 UI 组件,它们允许在单个 Activity 中组合多个 UI 组件并帮助设计大型屏幕应用程序,如平板电脑。在使用 Fragment 时,开发人员必须注意 Fragment 的生命周期,并熟练掌握 Fragment 的添加、管理和与 Activity 交互的方法。