"Necesita usar un tema Theme.Appcompat …" al probar ActionBarActivity, pero estoy
Tengo un problema al probar una aplicación que utiliza ActionBarActivity de android-support-v7-appcompat a través de la prueba de Android JUnit en Eclipse. Cuando se ejecuta en un emulador o dispositivo todo parece funcionar bien.
Intenté usar una aplicación simulada como en ActivityUnitTestCase y startActivity con ActionBarActivity y cambiar el tema principal en valores-v11, etc. como se sugiere en ActionBarCompat: java.lang.IllegalStateException: Necesita usar un Theme.AppCompat pero todavía no funciona.
- ¿Por qué WiFiP2P necesita permiso de Internet?
- Android Studio crear una variante de construcción / tipo excluyendo jniLibs?
- Cómo agregar ruta de seguimiento para mover sprite en andengine
- Importar paquetes android no puede ser resuelto
- Extraer texto fuera de una etiqueta HTML
Tienes que usar un tema Theme.AppCompat (o descendiente) con esta actividad no da una respuesta tampoco, als la persona que hizo la pregunta ni tenía un Theme.AppCompat especificado en su manifiesto (lo que hago), ni realmente quiere Para extender ActionBarActivity (lo que hago). Su solución era simplemente extender la Actividad en su lugar.
¿Qué estoy haciendo mal?
Este es el error que recibo (Failure-Trace de la Junit-Window):
java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:108) at android.support.v7.app.ActionBarActivityDelegateICS.onCreate(ActionBarActivityDelegateICS.java:57) at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:98) at android.hello.HelloWorldActivity.onCreate(HelloWorldActivity.java:14) at android.app.Activity.performCreate(Activity.java:5104) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) at android.test.ActivityUnitTestCase.startActivity(ActivityUnitTestCase.java:158) at android.hello.test.HelloWorldActivityTest.setUp(HelloWorldActivityTest.java:26) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175) at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1661)
HelloWorldActivity.java
package android.hello; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarActivity; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class HelloWorldActivity extends ActionBarActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView tv = (TextView) findViewById(android.hello.R.id.tv); tv.setText("Hello, Android"); } }
HelloWorldApplication.java
package android.hello; import android.app.Application; import android.util.Log; public class HelloWorldApplication extends Application { @Override public void onCreate() { super.onCreate(); setTheme(R.style.Theme_AppCompat); } }
Hola Manifiesto Mundial:
... <activity android:name=".HelloWorldActivity" android:label="@string/app_name" android:theme="@style/Theme.AppCompat"> ... </activity> ....
Del paquete de prueba:
HelloWorldActivityTest.java
package android.hello.test; import android.hello.HelloWorldActivity; import android.content.Intent; import android.test.ActivityUnitTestCase; import android.widget.TextView; public class HelloWorldActivityTest extends ActivityUnitTestCase<HelloWorldActivity> { HelloWorldActivity helloWorldActivity; TextView textView; public HelloWorldActivityTest() { super(HelloWorldActivity.class); } @Override protected void setUp() throws Exception { super.setUp(); // Starts the MainActivity of ScanMe startActivity(new Intent(getInstrumentation().getTargetContext(), HelloWorldActivity.class), null, null); // Reference to the MainActivity of ScanMe helloWorldActivity = (HelloWorldActivity)getActivity(); // Reference to the code input-TextEdit of the MainActivity of ScanMe textView = (TextView) helloWorldActivity.findViewById(android.hello.R.id.tv); } @Override protected void tearDown() throws Exception { super.tearDown(); } public void testPreconditions() throws Exception { assertNotNull(textView); } public void testInputCodeField(){ String actual=textView.getText().toString(); String expected = "Hello, Android"; assertEquals(expected,actual ); } }
- Las pruebas de Robolectric lanzan RuntimeException: java.lang.ClassNotFoundException
- Proguard no obstruye las aplicaciones de Android
- ActivityUnitTestCase getActionBar () devuelve null
- HttpUrlConnection getOutputStream lanza IOException
- La aplicación se bloquea cuando ejecuto Proguard en GSON (que utiliza enum)
- Aumenta automáticamente un valor en Firebase
- ViewPager dentro de Fragmento no muestra a pesar de usar getChildFragmentManager () al construir FragmentPagerAdapter
- Otras opciones de la biblioteca de Android TextToSpeech
Add android:theme="@style/Theme.AppCompat"
bajo la aplicación en su manifest.xml
Hay dos cosas que intentaría:
- Quite el setTheme de onCreate, es redundante con el manifiesto y puede conducir a la confusión
- Establecer el tema en la aplicación en lugar del nivel de actividad en el manifiesto
- Android + Pareja de dispositivos vía bluetooth mediante programación
- Android: ¿Cómo rastrear el origen de una InflateException?