设置自定义进度条时出现 NoSuchMethodError

NoSuchMethodError when setting a custom progress bar

我正在使用自定义进度条,它在我的身体 phone 上工作得很好。但是,我创建了我的应用程序的平板电脑布局并在模拟器上进行了尝试,它给了我这个错误消息 - NoSuchMethodError
这是我设置自定义进度条的代码: 第 34 行是我设置 interterminateDrawable 的地方。 最低 sdks 版本为 14

mProgressBar = (ProgressBar) findViewById(R.id.progressBar);
    mProgressBar.setVisibility(View.INVISIBLE);
    mProgressBar.setIndeterminateDrawable(getDrawable(R.drawable.progress));

这是日志:

java.lang.NoSuchMethodError: koemdzhiev.com.blinkmessage.LoginActivity.getDrawable
        at koemdzhiev.com.blinkmessage.LoginActivity.onCreate(LoginActivity.java:34)
        at android.app.Activity.performCreate(Activity.java:5008)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
        at android.app.ActivityThread.access0(ActivityThread.java:130)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4745)
        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:786)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
        at dalvik.system.NativeStart.main(Native Method)

The getDrawable() convenience method Context 已添加到 API 级别 21。您的平板电脑可能 运行 是旧版本。

The minimum sdks version is 14

构建工具应该在此处抱怨您使用 getDrawable()。要么将 minSdkVersion 提高到 21,要么使用其他方法,例如 Resources 上的 getDrawable() 方法(您可以通过调用 getResources() 获得 Resources你的 activity).

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
    {
        seekBar.setProgressTintList(ColorStateList.valueOf(ContextCompat.getColor(main_activity, R.color.your_color)));
    }
    else
    {
        seekBar.getProgressDrawable().setColorFilter(main_activity.getResources().getColor(R.color.your_color), PorterDuff.Mode.MULTIPLY);
    }