6-5.Android 对话框之 Fragment 中创建对话框的上下文对象的选择

一、对话框

  1. 对话框(Dialog)是一种常用的 UI 组件,它主要用于显示信息、接收用户操作反馈

  2. 对话框可以包含各种元素,但是主要还是以文本、按钮为主,其次是列表

  3. 其中,基础对话框是 Android 中最简单的对话框,而后是进度对话框、自定义对话框等


二、Fragment 中的上下文对象

  1. 在 Android 开发中,Fragment 是用于在 Activity 中表示或管理界面的一部分的一个组件

  2. 在 Fragment 中,可能会需要获取与其关联的上下文对象,这时可以使用 getActivity 方法或 getContext 方法

  3. 这两个方法在某些情况下可以互换使用,但它们之间存在一些差异和适用场景

1、通过 getActivity 方法获取
@Nullable
final public FragmentActivity getActivity() {
    return mHost == null ? null : (FragmentActivity) mHost.getActivity();
}
  1. 返回类型:返回 Activity 类型的对象

  2. 适用场景:当需要访问 Activity 特有的方法或属性时,应该使用此 getActivity 方法,例如,启动一个新的Activity、访问 Activity 中的某个视图

2、通过 getContext 方法获取
@Nullable
public Context getContext() {
    return mHost == null ? null : mHost.getContext();
}
  1. 返回类型:返回 Context 类型的对象

  2. 适用场景:当只需要一个普通的 Context 对象(例如,加载资源、启动服务、获取系统服务等)时,可以使用此 getContext 方法

  • 由于 Context 是 Activity 的一个超类,因此 getContext 方法返回的对象可以用于所有需要 Context 的地方

三、创建对话框的上下文对象的选择

1、基本介绍
  1. 选择 getActivity 方法返回的上下文对象还是 getContext 方法返回的上下文对象,主要取决于具体的上下文需求和代码的可读性

  2. 大多数情况下,使用 getActivity 方法更加直观,因为 getActivity 方法返回的是与 Fragment 关联的 Activity 实例,对话框通常需要一个 Activity 上下文对象来正确显示

2、演示
(1)选择 getActivity 方法
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

builder.setTitle("普通对话框");
builder.setMessage("确定退出吗?");
builder.setPositiveButton("确定", (dialog, which) -> {
    Toast.makeText(getActivity(), "点击了确定", Toast.LENGTH_SHORT).show();
});
builder.setNegativeButton("取消", (dialog, which) -> {
    Toast.makeText(getActivity(), "点击了取消", Toast.LENGTH_SHORT).show();
});

AlertDialog alertDialog = builder.create();

alertDialog.show();
(2)选择 getContext 方法
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());

builder.setTitle("普通对话框");
builder.setMessage("确定退出吗?");
builder.setPositiveButton("确定", (dialog, which) -> {
    Toast.makeText(getContext(), "点击了确定", Toast.LENGTH_SHORT).show();
});
builder.setNegativeButton("取消", (dialog, which) -> {
    Toast.makeText(getContext(), "点击了取消", Toast.LENGTH_SHORT).show();
});

AlertDialog alertDialog = builder.create();

alertDialog.show();

你可能感兴趣的:(Android,-,简化编程,android,xml,java-ee,java,android-studio,android,studio,android,jetpack)