对话框(Dialog)是一种常用的 UI 组件,它主要用于显示信息、接收用户操作反馈
对话框可以包含各种元素,但是主要还是以文本、按钮为主,其次是列表
其中,基础对话框是 Android 中最简单的对话框,而后是进度对话框、自定义对话框等
在 Android 开发中,Fragment 是用于在 Activity 中表示或管理界面的一部分的一个组件
在 Fragment 中,可能会需要获取与其关联的上下文对象,这时可以使用 getActivity 方法或 getContext 方法
这两个方法在某些情况下可以互换使用,但它们之间存在一些差异和适用场景
@Nullable
final public FragmentActivity getActivity() {
return mHost == null ? null : (FragmentActivity) mHost.getActivity();
}
返回类型:返回 Activity 类型的对象
适用场景:当需要访问 Activity 特有的方法或属性时,应该使用此 getActivity 方法,例如,启动一个新的Activity、访问 Activity 中的某个视图
@Nullable
public Context getContext() {
return mHost == null ? null : mHost.getContext();
}
返回类型:返回 Context 类型的对象
适用场景:当只需要一个普通的 Context 对象(例如,加载资源、启动服务、获取系统服务等)时,可以使用此 getContext 方法
选择 getActivity 方法返回的上下文对象还是 getContext 方法返回的上下文对象,主要取决于具体的上下文需求和代码的可读性
大多数情况下,使用 getActivity 方法更加直观,因为 getActivity 方法返回的是与 Fragment 关联的 Activity 实例,对话框通常需要一个 Activity 上下文对象来正确显示
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();
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();