Tengo una actividad en Android en la que estoy usando pestañas.¿Por qué me sale un error al intentar establecer el contenido de una tabspec en android?
public class UnitActivity extends TabActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.unit_view);
TabHost tabHost = getTabHost();
TabSpec spec;
spec = tabHost.newTabSpec("controls");
spec.setIndicator("Control");
spec.setContent(R.layout.unit_control);
tabHost.addTab(spec);
spec = tabHost.newTabSpec("data");
spec.setIndicator("Data");
spec.setContent(R.layout.unit_data);
tabHost.addTab(spec);
}
}
Sin embargo, cuando ejecuto el programa se bloquea con el error: "No se pudo crear el contenido de pestaña, porque no pudo encontrar la vista con id 2130903042". No entiendo cuál es el problema, porque R.layout.unit_data se refiere a un archivo de diseño en mi directorio de recursos (res/layout/unit_data.xml)
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TableLayout
android:stretchColumns="*"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Spinner android:id="@+id/unit_num"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:prompt="@string/choose_unit"/>
<TableRow android:padding="2dp">
<TextView
android:gravity="right"
android:padding="5dp"
android:text="@string/Power"/>
<TextView android:id="@+id/unit_power"
android:layout_span="3"
android:gravity="center"
android:padding="5dp"
android:background="@android:color/white"
android:textColor="@android:color/black"
android:text="AUTO"/>
</TableRow>
...
</TableLayout>
</ScrollView>
por lo que yo puedo decir es unit_data.xml bien formados e incluso he hecho referencia a él con éxito en otra actividad
class UnitData extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.unit_data);
Toast.makeText(this, "Hi from UnitData.onCreate", 5);
}
}
que no da un error y hace que el diseño muy bien.
¿Qué está pasando? ¿Por qué no puedo hacer referencia a este diseño al crear una pestaña?
Gracias a todos por el consejo. Tienes razón, parte de mi problema se debe a que estaba usando una referencia de R.layout (que se parecía mucho a una referencia de identificación que me desanimó). También creo que el ID al que se hace referencia de esta manera debe estar en la vista referenciada por @android: id/tabcontent. Leí mencionar eso en otro lado y mis propias pruebas parecen apoyarlo. – rushinge