我的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 {
在我的应用程序的 build.gradle 的依赖项块中,我包含对我自己的库的依赖项:
implementation project(path: ':mylib')
AFAIU 这不应该也不会对我的主项目中其他任何内容的编译产生任何影响(除非直接使用 mylib)。
mylib 很旧并且有特定用途,通常我没有理由更新它。它的build.gradle有这个依赖:
implementation 'androidx.appcompat:appcompat:1.0.1'
这导致了棉绒问题。 幸运的是,我可以升级到
'androidx.appcompat:appcompat:1.6.1'
,无需任何其他更改。