【问题标题】:Android app crashing java.lang.NoSuchMethodErrorAndroid 应用程序崩溃 java.lang.NoSuchMethodError
【发布时间】:2016-03-03 02:19:17
【问题描述】:

我在运行应用程序时遇到此活动崩溃。正如您在堆栈跟踪中看到的那样,这不是由于 appcompat 造成的。这是本机 android ListView 类,在运行应用程序时未找到其方法。

同一应用在其他设备上正常运行。 minSdkVersion = 13 目标 =23 max =23 并且当前的崩溃设备是 API 17。

FATAL EXCEPTION: main
 java.lang.NoSuchMethodError: android.widget.ListView.setElevation
 at com.example.saloni.laughgurumarketingapp.ContentDetails.getValues(ContentDetails.java: 392)
 at com.example.saloni.laughgurumarketingapp.ContentDetails.onCreate(ContentDetails.java: 298)
 at android.app.Activity.performCreate(Activity.java: 5122)
 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java: 1081)
 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java: 2270)
 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java: 2358)
 at android.app.ActivityThread.access$600(ActivityThread.java: 156)
 at android.app.ActivityThread$H.handleMessage(ActivityThread.java: 1340)
 at android.os.Handler.dispatchMessage(Handler.java: 99)
 at android.os.Looper.loop(Looper.java: 153)
 at android.app.ActivityThread.main(ActivityThread.java: 5297)
 at java.lang.reflect.Method.invokeNative(Native Method)
 at java.lang.reflect.Method.invoke(Method.java: 511)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java: 833)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java: 600)
 at dalvik.system.NativeStart.main(Native Method)

在代码中,它只是一个设置的海拔方法,正如您在跟踪中看到的那样,它正在崩溃。同样,它上次在使用 TextView 类方法之一时崩溃了。为什么会这样?

【问题讨论】:

    标签: java android


    【解决方案1】:

    api 17 中没有 setElevation() 方法。您只需要在 api 21 及更高版本上调用此方法。

    https://developer.android.com/reference/android/view/View.html#setElevation(float)

    如果您想在 api 21 设备上调用此方法,请执行以下操作:

    int currentapiVersion = android.os.Build.VERSION.SDK_INT;
    if (currentapiVersion >= android.os.Build.VERSION_CODES.LOLLIPOP){
        // Do something for lollipop and above versions
    } else{
        // do something for phones running an SDK before lollipop
    }
    

    【讨论】:

    • 但如果这是真的,那么提供 min sdk 版本有什么用?如果该方法肯定会崩溃,那么为什么要向开发人员提供它?
    • 看看这个stackoverflow.com/a/3940823/1764080这个方法调用你需要这样做
    【解决方案2】:

    您可以使用ViewCompat.setElevation,并且您的应用不会在 21 之前的系统上崩溃;但是它也不会对那些旧设备产生任何影响。

    【讨论】:

      猜你喜欢
      • 2012-10-04
      • 1970-01-01
      • 2018-06-27
      • 2020-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多