Java 使用viewpager的片段的getActivity()或getContext()?
从github上的文件选择器库 启动文件选择器时,会调用此代码,但有另一个方法与此相同,但根据生成版本使用getActivity()或getContext(): 我不确定应该使用哪一个,getActivity和getContext之间的区别是什么 第一种方法:Java 使用viewpager的片段的getActivity()或getContext()?,java,android,Java,Android,从github上的文件选择器库 启动文件选择器时,会调用此代码,但有另一个方法与此相同,但根据生成版本使用getActivity()或getContext(): 我不确定应该使用哪一个,getActivity和getContext之间的区别是什么 第一种方法: public void start(@NonNull Activity activity, int requestCode) { activity.startActivityForResult(createIntent(a
public void start(@NonNull Activity activity, int requestCode) {
activity.startActivityForResult(createIntent(activity), requestCode);
}
@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB)
public void start(@NonNull Fragment fragment, int requestCode) {
Context context;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
context = fragment.getContext();
} else {
context = fragment.getActivity();
}
if (context != null) {
fragment.startActivityForResult(createIntent(context), requestCode);
}
}
相同的方法但不同的上下文取决于构建版本:
public void start(@NonNull Activity activity, int requestCode) {
activity.startActivityForResult(createIntent(activity), requestCode);
}
@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB)
public void start(@NonNull Fragment fragment, int requestCode) {
Context context;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
context = fragment.getContext();
} else {
context = fragment.getActivity();
}
if (context != null) {
fragment.startActivityForResult(createIntent(context), requestCode);
}
}
TLDR<代码>getActivity添加到API 11中
getContext
添加到API 23中。你应该使用适合你需要的。首先,第一个方法是对活动
调用startActivityForResult
,其中第二个方法是对片段
调用startActivityForResult
。因此,如果您正在进行活动
,请使用第一种方法;否则,使用第二种方法
除此之外,还有一个检查的原因是方法被添加到Fragment
类的时间getContext
直到API 23才添加;然而,API 11中添加了getActivity
。值得注意的是,从API 28开始,这两种方法都已被弃用
如果查看不同的方法,您会注意到
getContext
返回Context
,getActivity
返回Activity
。它们用于类似的事情,但两者之间的区别在于上下文
是活动
和应用程序
的基类。通常情况下,获取活动将允许您使用上下文
,但有时您可能需要(或想要)应用程序上下文
。有关2个上下文
实例之间差异的更多信息,请参考 TLDR<代码>getActivity添加到API 11中getContext
添加到API 23中。你应该使用适合你需要的。首先,第一个方法是对活动
调用startActivityForResult
,其中第二个方法是对片段
调用startActivityForResult
。因此,如果您正在进行活动
,请使用第一种方法;否则,使用第二种方法
除此之外,还有一个检查的原因是方法被添加到Fragment
类的时间getContext
直到API 23才添加;然而,API 11中添加了getActivity
。值得注意的是,从API 28开始,这两种方法都已被弃用
如果查看不同的方法,您会注意到
getContext
返回Context
,getActivity
返回Activity
。它们用于类似的事情,但两者之间的区别在于上下文
是活动
和应用程序
的基类。通常情况下,获取活动将允许您使用上下文
,但有时您可能需要(或想要)应用程序上下文
。有关2个上下文
实例之间差异的更多信息,请参考 如果您使用的是Support Library/AndroidX片段(您应该使用它,因为不应该使用框架片段),它们将返回相同的对象。如果您使用的是Support Library/AndroidX片段(您应该使用它,因为不应该使用框架片段),它们将返回相同的对象。请注意,即使对于框架片段也是如此(在API级别差异很重要的情况下),这些方法仍然会返回完全相同的对象,因此您的最后一段并不真正适用,因为您返回的上下文实际上仍然是一个活动
。请注意,即使对于框架片段(API级别差异很重要的地方),这些方法仍然会返回完全相同的对象,因此您的最后一段并不真正适用,因为您返回的上下文实际上仍然是一个活动
。