Java.lang.NoSuchMethodError: 没有静态方法setOnApplyWindowInsetsListener。

18

我将我的Android Studio升级到了2.1.3,现在出现以下错误

java.lang.NoSuchMethodError: No static method setOnApplyWindowInsetsListener(Landroid/view/View;Landroid/support/v4/view/OnApplyWindowInsetsListener;)V in class Landroid/support/v4/view/ViewCompatLollipop; or its super classes (declaration of 'android.support.v4.view.ViewCompatLollipop' appears in /data/data/com.restroshop.restroowner/files/instant-run/dex/slice-internal_impl-24.2.0_7c318f8d2adb03d07a9def5d35a14e39204ecef2-classes.dex)
at android.support.v4.view.ViewCompat$LollipopViewCompatImpl.setOnApplyWindowInsetsListener(ViewCompat.java:1619)
at android.support.v4.view.ViewCompat.setOnApplyWindowInsetsListener(ViewCompat.java:2924)
at android.support.v7.app.AppCompatDelegateImplV7.createSubDecor(AppCompatDelegateImplV7.java:425)
at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:312)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:277)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
at com.restroshop.restroowner.splash.SplashScreen.onCreate(SplashScreen.java:65)
at android.app.Activity.performCreate(Activity.java:6033)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902)

在代码行中 setContentView(R.layout.activity_splash_screen);

我的代码片段是

public class SplashScreen extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash_screen); // this line giving error
    }
我不知道在升级时到底出了什么问题。

2
请检查您的gradle文件中每个"com.android.support:xxx:..."是否为24.2.0。 - ldemay
谢谢@Idemay。它对我有用。 - Kuldeep Yadav
太棒了,查看 https://developer.android.com/topic/libraries/support-library/revisions.html#24-2-0-v4-refactor ,v4库现在已经被拆分了。 - ldemay
2个回答

24

我将我的Android Studio升级到了2.1.3,现在遇到了以下错误:

我也遇到了同样的问题。但是我解决了这个问题,方法如下:

导致此异常的原因是AppcompatActivity源自v7库。因此,我们应该根据您的gradle和SDK提供适当的库。

  1. 应该更新依赖库。
  2. 右键单击项目,在项目结构中选择“打开模块设置”,然后选择依赖项选项卡 - >图书馆模块->然后输入要添加到项目中的库。它会显示基于gradle更新版本的最新库,然后选择最新版本并删除现有版本。

例如,在我的项目中,“appcompat-v7”的版本为23.4.0,然后我将其更改为24.2.0。


19

由于同一库存在多个版本,导致我遇到了这个错误。

compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.jakewharton:butterknife:8.5.1'

Butterknife 正在添加新版本的 Appcompat 库。 我使用以下方式进行了检查

./gradlew -q dependencies app:dependencies

Gradle的工作方式是自动更新库的版本,如果有新的可用版本。因此我添加了以下代码。

compile('com.jakewharton:butterknife:8.5.1') {
    exclude module: 'appcompat-v7'
    exclude group: 'com.android.support'
}

之后它运作得很好。


1
你让我重新找回了编程的感觉...我在过去两天里一直苦苦挣扎,但是“排除模块”这个东西救了我...所以给你点赞,兄弟... - Ashwani
我能理解。我自己也卡在这个问题上了。这真的很令人沮丧! - Harish Rana

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