Cómo solucionar errores al implementar compatibilidad hacia atrás API 12 a 7 de Android GridLayout

¿Cómo puedo asegurarme de que las características más recientes (API nivel 12) estén disponibles para las API más antiguas (nivel 7)? Quiero usar un bloque de RadioButtons. Lo hago dentro de un gridLayout. Yo uso Eclipse Juno para la edición, JDK compilador Java nivel de cumplimiento establecido en 1.6.

Al guardar el diseño que contiene el gridLayout con RadioButtons, advirtió que no está disponible en el nivel 7 de la API, por lo que le pregunté si quería resolver aquello a lo que respondí que sí.

Comprobé que en lugar de usar GridLayout ese tipo es (correctamente?) Denominado android.support.v7.widget.GridLayout en el archivo de diseño. Un nodo 'gridlayout_v7' con un subdirectorio src vacío se colocó en la raíz del proyecto bij Eclipse.

Está instalado Android Support Library v.11.

Sin embargo, cuando ejecuto el programa en el dispositivo virtual (dispositivo Android 2.1), LogCat devuelve los siguientes errores y advertencias:

09-16 08:21:44.068: E/AndroidRuntime(678): ERROR: thread attach failed 09-16 08:21:44.894: W/ResourceType(412): Resources don't contain package for resource number 0x7f0700e5 09-16 08:21:44.906: W/ResourceType(412): Resources don't contain package for resource number 0x7f020031 09-16 08:21:44.906: W/ResourceType(412): Resources don't contain package for resource number 0x7f020030 09-16 08:21:44.906: W/ResourceType(412): Resources don't contain package for resource number 0x7f050000 09-16 08:21:44.984: W/ResourceType(412): Resources don't contain package for resource number 0x7f060000 09-16 08:21:44.994: W/ResourceType(412): Resources don't contain package for resource number 0x7f060001 09-16 08:21:45.234: W/ResourceType(412): Resources don't contain package for resource number 0x7f0700e5 09-16 08:21:45.234: W/ResourceType(412): Resources don't contain package for resource number 0x7f020031 09-16 08:21:45.234: W/ResourceType(412): Resources don't contain package for resource number 0x7f020030 09-16 08:21:45.234: W/ResourceType(412): Resources don't contain package for resource number 0x7f050000 09-16 08:21:45.244: W/ResourceType(412): Resources don't contain package for resource number 0x7f060000 09-16 08:21:45.254: W/ResourceType(412): Resources don't contain package for resource number 0x7f060001 09-16 08:21:47.374: E/AndroidRuntime(689): ERROR: thread attach failed 09-16 08:21:47.844: W/dalvikvm(695): VFY: unable to resolve virtual method 2883: Landroid/support/v7/widget/ViewGroup;.onChildVisibilityChanged (Landroid/view/View;II)V 09-16 08:21:47.844: W/dalvikvm(695): VFY: unable to resolve virtual method 2885: Landroid/support/v7/widget/ViewGroup;.onInitializeAccessibilityEvent (Landroid/view/accessibility/AccessibilityEvent;)V 09-16 08:21:47.854: W/dalvikvm(695): VFY: unable to find class referenced in signature (Landroid/view/accessibility/AccessibilityNodeInfo;) 09-16 08:21:47.854: W/dalvikvm(695): VFY: unable to resolve virtual method 2886: Landroid/support/v7/widget/ViewGroup;.onInitializeAccessibilityNodeInfo (Landroid/view/accessibility/AccessibilityNodeInfo;)V 09-16 08:21:47.874: W/dalvikvm(695): VFY: unable to resolve virtual method 2887: Landroid/support/v7/widget/ViewGroup;.onSetLayoutParams (Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V 09-16 08:21:47.874: W/dalvikvm(695): VFY: unable to resolve virtual method 2888: Landroid/support/v7/widget/ViewGroup;.onViewAdded (Landroid/view/View;)V 09-16 08:21:47.874: W/dalvikvm(695): VFY: unable to resolve virtual method 2889: Landroid/support/v7/widget/ViewGroup;.onViewRemoved (Landroid/view/View;)V 09-16 08:21:47.884: W/dalvikvm(695): VFY: unable to resolve static method 3016: Landroid/view/View;.resolveSizeAndState (III)I 

El registro de errores no muestra errores.

La consola muestra lo siguiente (sin errores):

 [2012-11-20 16:59:22 - SimpleScore] ------------------------------ [2012-11-20 16:59:22 - SimpleScore] Android Launch! [2012-11-20 16:59:22 - SimpleScore] adb is running normally. [2012-11-20 16:59:22 - SimpleScore] Performing nl.computerhuys.simplescore.MainActivity activity launch [2012-11-20 16:59:22 - SimpleScore] Automatic Target Mode: launching new emulator with compatible AVD 'VirtualAndroid2.1' [2012-11-20 16:59:22 - SimpleScore] Launching a new emulator with Virtual Device 'VirtualAndroid2.1' [2012-11-20 16:59:32 - Emulator] Warning: No DNS servers found [2012-11-20 16:59:33 - SimpleScore] New emulator found: emulator-5554 [2012-11-20 16:59:33 - SimpleScore] Waiting for HOME ('android.process.acore') to be launched... [2012-11-20 17:00:20 - SimpleScore] HOME is up on device 'emulator-5554' [2012-11-20 17:00:20 - SimpleScore] Uploading SimpleScore.apk onto device 'emulator-5554' [2012-11-20 17:00:22 - SimpleScore] Installing SimpleScore.apk... [2012-11-20 17:00:29 - SimpleScore] Success! [2012-11-20 17:00:29 - SimpleScore] Starting activity nl.computerhuys.simplescore.MainActivity on device emulator-5554 [2012-11-20 17:00:32 - SimpleScore] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=nl.computerhuys.simplescore/.MainActivity } 

Código completo del archivo de código fuente MainActivity.java:

 package nl.computerhuys.simplescore; import android.os.Bundle; import android.app.Activity; import android.view.Menu; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } } 

Código completo del archivo de disposición activity_main.xml:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res/nl.computerhuys.simplescore" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginTop="133dp" android:text="@string/speler1" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/textView1" android:layout_marginTop="33dp" android:text="@string/speler2" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/textView2" android:layout_marginTop="33dp" android:text="@string/speler3" android:textAppearance="?android:attr/textAppearanceLarge" /> <android.support.v7.widget.GridLayout android:id="@+id/gridLayout1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@+id/textView1" android:layout_marginLeft="19dp" android:layout_marginTop="-5dp" android:layout_toRightOf="@+id/textView2" > <RadioButton android:id="@+id/radioButton1" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_column="0" app:layout_gravity="right" app:layout_row="0" android:text="@string/score1" /> <RadioButton android:id="@+id/radioButton2" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_column="1" app:layout_gravity="left" app:layout_row="0" android:text="@string/score2" /> <RadioButton android:id="@+id/radioButton3" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_column="2" app:layout_row="0" android:text="@string/score3" /> <android.support.v7.widget.Space android:layout_width="100dp" android:layout_height="28dp" app:layout_column="0" app:layout_row="0" /> </android.support.v7.widget.GridLayout> <android.support.v7.widget.GridLayout android:id="@+id/gridLayout2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@id/textView2" android:layout_marginLeft="19dp" android:layout_marginTop="-5dp" android:layout_toRightOf="@id/textView2" > <RadioButton android:id="@+id/RadioButton03" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_column="0" app:layout_gravity="right" app:layout_row="0" android:text="@string/score1" /> <RadioButton android:id="@+id/RadioButton02" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_column="1" app:layout_gravity="left" app:layout_row="0" android:text="@string/score2" /> <RadioButton android:id="@+id/RadioButton01" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_column="2" app:layout_gravity="left" app:layout_row="0" android:text="@string/score3" /> <android.support.v7.widget.Space android:layout_width="100dp" android:layout_height="28dp" app:layout_column="0" app:layout_row="0" /> </android.support.v7.widget.GridLayout> <android.support.v7.widget.GridLayout android:id="@+id/gridLayout3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@+id/textView3" android:layout_marginLeft="19dp" android:layout_marginTop="-5dp" android:layout_toRightOf="@id/textView2" > <RadioButton android:id="@+id/RadioButton05" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_column="0" app:layout_gravity="right" app:layout_row="0" android:text="@string/score1" /> <RadioButton android:id="@+id/RadioButton06" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_column="1" app:layout_gravity="left" app:layout_row="0" android:text="@string/score2" /> <RadioButton android:id="@+id/RadioButton04" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_column="2" app:layout_gravity="left" app:layout_row="0" android:text="@string/score3" /> <android.support.v7.widget.Space android:layout_width="100dp" android:layout_height="28dp" app:layout_column="0" app:layout_row="0" /> </android.support.v7.widget.GridLayout> </RelativeLayout> 

Por último, aquí está el archivo de manifiesto:

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="nl.computerhuys.simplescore" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 

Al hacer clic en un RadioButton en el dispositivo virtual (después de obligar primero a mostrar la aplicación) se producen los siguientes errores de LogCat:

 09-16 09:05:04.056: W/KeyCharacterMap(412): No keyboard for id 0 09-16 09:05:04.064: W/KeyCharacterMap(412): Using default keymap: /system/usr/keychars/qwerty.kcm.bin 09-16 09:05:15.075: W/ActivityManager(412): Scheduling restart of crashed service com.android.inputmethod.latin/.LatinIME in 5000ms 09-16 09:05:15.095: E/ActivityThread(412): Failed to find provider info for android.server.checkin 09-16 09:05:15.105: W/Checkin(412): Can't log event SYSTEM_SERVICE_LOOPING: java.lang.IllegalArgumentException: Unknown URL content://android.server.checkin/events 09-16 09:05:21.114: W/InputMethodManager(695): Ignoring onBind: cur seq=-1, given seq=1 

Después de seleccionar un botón de radio, no es posible desmarcarlo haciendo clic de nuevo o seleccionando otro botón de radio en el mismo grupo (mismo GridLayout).

¿Qué está mal, cómo resolver?

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.