gpt4 book ai didi

java - getActivity() 或 getContext() 用于带有 viewpager 的 fragment ?

转载 作者:行者123 更新时间:2023-11-30 04:55:02 27 4
gpt4 key购买 nike

来自github上的文件选择器库,

启动文件选择器时会调用此代码,但还有另一种方法相同,但根据构建版本使用 getActivity() 或 getContext():

我不确定应该使用哪个,getActivity 和 getContext 有什么区别?

第一种方法:

public void start(@NonNull Activity activity, int requestCode) {
activity.startActivityForResult(createIntent(activity), requestCode);
}

方法相同,但 Context 取决于构建版本:

@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 中添加的。您应该使用适合您需要的那个。首先,第一个方法是在 Activity 上调用 startActivityForResult,第二个方法是在 Fragment 上调用 startActivityForResult .所以如果你在一个Activity中,使用第一种方法;否则,使用第二种方法。

除此之外,进行检查的原因是方法添加到 Fragment 类的时间。 getContext 直到 API 23 才被添加;而 getActivity 是在 API 11 中添加的。Source请注意,从 API 28 开始,这两个都已弃用。

如果您查看不同的方法,您会注意到 getContext 返回 ContextgetActivity 返回 Activity。它们用于类似的事情,但两者之间的区别在于 ContextActivityApplication 的基类。通常,获取 Activity 将允许您使用 Context,但有时您可能需要(或想要)Application Context。可以引用this link有关 2 个 Context 实例之间差异的更多信息。

关于java - getActivity() 或 getContext() 用于带有 viewpager 的 fragment ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59366153/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com