Ho un'attività Android in cui sto utilizzando le schede.Perché si verifica un errore durante il tentativo di impostare il contenuto di un tabspec in 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);
}
}
Tuttavia quando si esegue il programma si blocca con l'errore: "Impossibile creare contenuti scheda perché non riusciva a trovare vista con id 2.130.903,042 mila". Non capisco quale sia il problema, perché R.layout.unit_data fa riferimento a un file di layout nel mio indice di risorse (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>
per quanto posso dire è unit_data.xml ben formate e ho anche fatto riferimento con successo in un'altra attività
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);
}
}
che non dà un errore e rende il layout più che bene.
Cosa sta succedendo? Perché non posso fare riferimento a questo layout quando creo una scheda?
Grazie mille per il consiglio. Hai ragione, parte del mio problema è perché stavo usando un riferimento a R.layout (che sembrava molto simile a un riferimento di identificazione che mi ha buttato fuori). Penso anche che l'ID di riferimento in questo modo deve essere nella vista a cui fa riferimento @android: id/tabcontent. Ho letto di averlo menzionato altrove e il mio test sembra supportarlo. – rushinge