Skip to content

[Color] Failed to create the ColorResourcesTableCreator. #4472

Closed
@brahmkshatriya

Description

@brahmkshatriya

Description: Applying DynamicColors 2nd time, generates error after recreating the activity. The color does not get applied.

Failed to create the ColorResourcesTableCreator. 
 java.lang.IllegalArgumentException: Non color resource found: name=com.example.dynamiccolortest:?5/com.example.dynamiccolortest:color/material_personalized_color_on_secondary, typeId=5
  at com.google.android.material.color.ColorResourcesTableCreator.create(ColorResourcesTableCreator.java:90)
  at com.google.android.material.color.ColorResourcesLoaderCreator.create(ColorResourcesLoaderCreator.java:46)
  at com.google.android.material.color.ResourcesLoaderUtils.addResourcesLoaderToContext(ResourcesLoaderUtils.java:35)
  at com.google.android.material.color.ResourcesLoaderColorResourcesOverride.applyIfPossible(ResourcesLoaderColorResourcesOverride.java:49)
  at com.google.android.material.color.DynamicColors.applyToActivityIfAvailable(DynamicColors.java:310)
  at com.google.android.material.color.DynamicColors$DynamicColorsActivityLifecycleCallbacks.onActivityPreCreated(DynamicColors.java:451)
  at android.app.Application.dispatchActivityPreCreated(Application.java:356)
  at android.app.Activity.dispatchActivityPreCreated(Activity.java:1505)
  at android.app.Activity.performCreate(Activity.java:8947)
  at android.app.Activity.performCreate(Activity.java:8938)
  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1536)
  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3975)
  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4173)
  at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:6242)
  at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:6133)
  at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:80)
  at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:60)
  at android.app.servertransaction.TransactionExecutor.executeNonLifecycleItem(TransactionExecutor.java:231)
  at android.app.servertransaction.TransactionExecutor.executeTransactionItems(TransactionExecutor.java:152)
  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:93)
  at android.app.ClientTransactionHandler.executeTransaction(ClientTransactionHandler.java:70)
  at android.app.ActivityThread.handleRelaunchActivityLocally(ActivityThread.java:6199)
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2605)
  at android.os.Handler.dispatchMessage(Handler.java:107)
  at android.os.Looper.loopOnce(Looper.java:232)
  at android.os.Looper.loop(Looper.java:317)
  at android.app.ActivityThread.main(ActivityThread.java:8592)
  at java.lang.reflect.Method.invoke(Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:583)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:878)

Expected behavior: Color gets applied.

Minimal Sample code:

class MainActivity : AppCompatActivity() {

    private val colors = listOf(Color.RED, Color.GREEN, Color.BLUE)
    private fun applyColor(){
        val color = colors.random()
        val options = DynamicColorsOptions.Builder()
            .setContentBasedSource(color)
            .build()
        DynamicColors.applyToActivitiesIfAvailable(application, options)
        recreate()
    }
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        findViewById<Button>(R.id.button).setOnClickListener { applyColor() }
    }
}

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions