错误:将片段版本升级至至少1.3.0。[InvalidFragmentVersionForActivityResult]

7

我在 Java Android 中有以下与 Google 登录相关的代码。

private void signIn() {
        Intent signInIntent = mGoogleSignInClient.getSignInIntent();
        someActivityResultLauncher.launch(signInIntent);
}

ActivityResultLauncher<Intent> someActivityResultLauncher = registerForActivityResult(
        new ActivityResultContracts.StartActivityForResult(),
        new ActivityResultCallback<ActivityResult>() {
            @Override
            public void onActivityResult(ActivityResult result) {
                if (result.getResultCode() == Activity.RESULT_OK) {
                    Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(result.getData());
                    handleSignInResult(task);
                }
            }
        }
);

我遇到了这个代码检查错误。应用在设备上可以运行,但我想修复这个问题。

/home/runner/work/etu-android/etu-android/app/src/main/java/com/encycode/etus/Login.java:151: Error: Upgrade Fragment version to at least 1.3.0. [InvalidFragmentVersionForActivityResult]
    ActivityResultLauncher<Intent> someActivityResultLauncher = registerForActivityResult(
                                                                ^

   Explanation for issues of type "InvalidFragmentVersionForActivityResult":
   In order to use the ActivityResult APIs you must upgrade your              
     Fragment version to 1.3.0. Previous versions of FragmentActivity         
          failed to call super.onRequestPermissionsResult() and used invalid
   request codes

我正在使用以下库版本

implementation "androidx.fragment:fragment:1.3.1"

你是如何修复这个误报的 Lint 错误的? - Bitwise DEVS
3个回答

7

这是一个已知问题,在下一个版本中已经修复。你可以等待发布该版本或者禁止该警告。

编辑Fragment 1.3.2已发布,声明如下:

Fragment现在依赖于Activity 1.2.2,修复了使用Fragment 1.3.1或更高版本时Activity的InvalidFragmentVersionForActivityResult lint检查问题。

因此,您应该升级到Fragment 1.3.2。


3
我仍然遇到棉絮错误,这是一个有点老的Java项目,我已经添加了androidx.activity:activity-ktx:1.3.0-alpha07并且正在使用androidx.fragment:fragment-ktx:1.3.3,与AS Arctic Fox Canary 15一起工作。 - Bitwise DEVS
同时在使用Arctix Fox时,对于androidx.fragment:fragment-ktx:1.3.6也会出现此错误。 - CoolMind
@CoolMind - 你应该在一个能够重现你问题的项目中提交问题 - ianhanniballake
对于我来说,'androidx.fragment:fragment-ktx:1.3.6'也无法正常工作,但在将'androidx.activity:activity:1.3.0-alpha05'添加到实现列表后,它开始正常工作了... - Hemant Parmar

1
在我的情况下,我已经将appcompat库更新到了这个版本,并解决了这个问题:
implementation "androidx.appcompat:appcompat:1.5.1"

1

Fragment 1.3.2已经依赖于此版本的Activity,您不需要手动包含它的依赖项;作为传递依赖项的一部分,您将自动获得Activity的修复程序。 - ianhanniballake
@ianhanniballake,如果不添加这个依赖项,Lint 将无法消除错误。 - CoolMind
这不是传递依赖项的工作方式。如果您发现有必要,应该使用一个能够重现您问题的项目提交问题 - ianhanniballake

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接