2011-06-10 5 views
1

Je reçois toujours une exception RuntimeException de Robolectric quand il tente d'appeler un onCreate pour une activité qui a un ProgressBar. J'ai localisé le problème à ce bloc dans le fichier XML de mise en page. Dès que je l'enlève et relance le test, les choses fonctionnent bien.Robolectric Problème avec ProgressBar

<ProgressBar android:id="@+android:id/progress_large" 
    style="?android:attr/progressBarStyleLarge" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    android:visibility="invisible"/> 

Voici la trace complète de la pile:

java.lang.RuntimeException: java.lang.RuntimeException: 16842752 is already defined with name: id/progress_large can't also call it: attr/theme 
    at com.xtremelabs.robolectric.RobolectricTestRunner.createResourceLoader(RobolectricTestRunner.java:314) 
    at com.xtremelabs.robolectric.RobolectricTestRunner.setupApplicationState(RobolectricTestRunner.java:268) 
    at com.xtremelabs.robolectric.RobolectricTestRunner.internalBeforeTest(RobolectricTestRunner.java:219) 
    at com.xtremelabs.robolectric.RobolectricTestRunner.methodBlock(RobolectricTestRunner.java:199) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) 
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) 
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) 
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:236) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49) 
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 
Caused by: java.lang.RuntimeException: 16842752 is already defined with name: id/progress_large can't also call it: attr/theme 
    at com.xtremelabs.robolectric.res.ResourceExtractor.addRClass(ResourceExtractor.java:37) 
    at com.xtremelabs.robolectric.res.ResourceExtractor.addSystemRClass(ResourceExtractor.java:18) 
    at com.xtremelabs.robolectric.res.ResourceLoader.<init>(ResourceLoader.java:59) 
    at com.xtremelabs.robolectric.RobolectricTestRunner.createResourceLoader(RobolectricTestRunner.java:311) 
    ... 17 more 

Je travaille de la tête github (1.0-RC2) parce que je pensais que le ShadowProgressBar me aider, mais il ne semble pas avoir, mais je ne pourrais pas l'utiliser correctement.

Je pensais également que l'ID ou le style posait le problème, mais les supprimer dans le fichier XML n'arrêtait pas l'exception.

Toute aide serait appréciée.


MISE À JOUR

j'ai changé la barre de progression xml à ceci:

<ProgressBar 
    android:id="@+id/circle_progress_bar" 
    style="@android:style/Widget.ProgressBar.Large.Inverse" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    android:visibility="invisible" /> 

Et cela a fonctionné.

+0

supprimer la balise style .. fonctionne très bien ... Je – ngesh

+0

mis à jour le message original avec une solution que j'ai trouvé. – Ali

Répondre

1

changement

android:id="@+android:id/progress_large"

à

android:id="@+id/progress_large"