Android Studio Lint 无法将 AppCompatActivity 识别为 FragmentActivity 的子类

问题描述 投票:0回答:1

我的MainActivity是AppCompatActivity的子类:

class MainActivity : AppCompatActivity() {

在代码中的某些地方我使用了 FragmentActivity 的函数和属性,例如

invalidateMenu()
onBackPressedDispatcher

一切都编译得很好并且工作得很好。 唯一的问题是 Android Studio lint 无法识别从 FragmentActivity 派生的 AppCompatActivity。

我在代码中没有遇到任何其他 lint 问题,但在我在 AppCompatActivity 的子类中使用 FragmentActivity 函数和属性的任何活动中确实会发生此问题。

未解决:

已解决(仅用于测试):

未解决:

已解决(仅用于测试):


问题窗口:

编辑-更多信息:

一系列 ctrl+单击 AppCompatActivity 最终将我带到

...gradle\caches\modules-2\files-2.1\androidx.core\core\1.0.0...
,其中

public class ComponentActivity extends Activity
        implements LifecycleOwner, KeyEventDispatcher.Component { 

按住 Ctrl 键并单击 onBackPressedDispatcher 并进行强制转换测试,我将进入

...gradle\caches\modules-2\files-2.1\androidx.activity\activity\1.7.1\...
哪里

public class ComponentActivity extends androidx.core.app.ComponentActivity implements
        ContextAware,
        LifecycleOwner,
        ViewModelStoreOwner,
        HasDefaultViewModelProviderFactory,
        SavedStateRegistryOwner,
        OnBackPressedDispatcherOwner,
        ActivityResultRegistryOwner,
        ActivityResultCaller,
        OnConfigurationChangedProvider,
        OnTrimMemoryProvider,
        OnNewIntentProvider,
        OnMultiWindowModeChangedProvider,
        OnPictureInPictureModeChangedProvider,
        MenuHost,
        FullyDrawnReporterOwner {
java android kotlin androidx static-analysis
1个回答
0
投票

我已经找到了原因和解决方案,但归根结底,这对我来说似乎是一个 Gradle bug。

在我的应用程序的 build.gradle 的依赖项块中,我包含对我自己的库的依赖项:

implementation project(path: ':mylib')

AFAIU 这不应该也不会对我的主项目中其他任何内容的编译产生任何影响(除非直接使用 mylib)。

mylib 很旧并且有特定用途,通常我没有理由更新它。它的build.gradle有这个依赖:

implementation 'androidx.appcompat:appcompat:1.0.1'

这导致了棉绒问题。 幸运的是,我可以升级到

'androidx.appcompat:appcompat:1.6.1'
,无需任何其他更改。

© www.soinside.com 2019 - 2024. All rights reserved.