【问题标题】:A TaskDescription's primary color should be opaque Android 6.0TaskDescription 的原色应该是不透明的 Android 6.0
【发布时间】:2016-12-23 08:54:53
【问题描述】:

我的代码是,

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        Bitmap bm = BitmapFactory.decodeResource(context.getResources(),R.drawable.app_icon);
        ActivityManager.TaskDescription taskDescription = new ActivityManager.TaskDescription("AppName", bm ,R.color.colorPrimaryDark);
        setTaskDescription(taskDescription);
    }

colors.xml

<color name="colorPrimaryDark">#FF9800</color> 

它给出错误java.lang.RuntimeException: A TaskDescription's primary color should be opaque

编辑1:

manifest.xml

<application
    android:allowBackup="true"
    android:icon="@drawable/app_icon3"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">

styles.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimaryDark">#242533</item>
    <item name="colorPrimary">#242533</item>
    <item name="colorAccent">@color/white</item>                    

</style>

日志猫

 E/AndroidRuntime: FATAL EXCEPTION: main
              Process: co.treeline.kitetrack, PID: 18419
              java.lang.RuntimeException: Unable to start activity ComponentInfo{co.treeline.kitetrack/co.treeline.kitetrack.SplashScreen}: java.lang.RuntimeException: A TaskDescription's primary color should be opaque
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2426)
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2490)
                  at android.app.ActivityThread.access$900(ActivityThread.java:154)
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354)
                  at android.os.Handler.dispatchMessage(Handler.java:102)
                  at android.os.Looper.loop(Looper.java:148)
                  at android.app.ActivityThread.main(ActivityThread.java:5443)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
               Caused by: java.lang.RuntimeException: A TaskDescription's primary color should be opaque
                  at android.app.ActivityManager$TaskDescription.<init>(ActivityManager.java:589)
                  at co.treeline.kitetrack.SplashScreen.changeMinimizedActionbarColor(SplashScreen.java:284)
                  at co.treeline.kitetrack.SplashScreen.onCreate(SplashScreen.java:73)
                  at android.app.Activity.performCreate(Activity.java:6259)
                  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1130)
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2490) 
                  at android.app.ActivityThread.access$900(ActivityThread.java:154) 
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354) 
                  at android.os.Handler.dispatchMessage(Handler.java:102) 
                  at android.os.Looper.loop(Looper.java:148) 
                  at android.app.ActivityThread.main(ActivityThread.java:5443) 
                  at java.lang.reflect.Method.invoke(Native Method) 
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 

这里有什么问题?

【问题讨论】:

  • 您能否添加您的 style.xml 文件以及清单和完整堆栈跟踪
  • 我已经厌倦了。这也给出了同样的错误
  • 我在TaskDescricption 中使用过R.color.colorPrimaryDark。更改colorAccent需要什么?
  • 你能发布完整的堆栈跟踪吗?
  • 我无法重现您应该可以解决的问题

标签: colors android-actionbar


【解决方案1】:

原因是TaskDescription("AppName", bm ,R.color.colorPrimaryDark) 需要颜色值作为参数,而您正在使用资源 ID。不一样,你必须通过context.getResources().getColor(R.color.colorPrimaryDark)方法来获取你的颜色。

改变:

ActivityManager.TaskDescription taskDescription = new ActivityManager.TaskDescription("AppName", bm ,R.color.colorPrimaryDark);

ActivityManager.TaskDescription taskDescription = new ActivityManager.TaskDescription("AppName", bm , ContextCompat.getColor(context, R.color.colorPrimaryDark));

【讨论】:

  • 很高兴能为您提供帮助。
  • 也可以使用 ActivityManager.TaskDescription taskDescription = new ActivityManager.TaskDescription("AppName", bm, ContextCompat.getColor(context,R.color.app_secondary1_color));getColor() is deprecated
  • 好的,谢谢 ;)
猜你喜欢
  • 1970-01-01
  • 2015-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多