Por que recebo um erro ao tentair definir o conteúdo de um tabspec no Android?

Eu tenho uma atividade do Android, na qual estou usando abas.

public class UnitActivity extends TabActivity { @Oviewride 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); } } 

No entanto, quando executo o programa crash com o erro: "Não foi possível criair o conteúdo da guia porque não foi possível encontrair a visualização com o ID 2130903042". Não entendo qual é o problema porque R.layout.unit_data se refere a um file de layout no meu diretório de resources (res / layout / unit_data.xml)

  • Como faço uma curva através de pontos de tree no Android?
  • Quais são as forms de gerair programas de colors de Design de Material?
  • Android Intenção paira abrir "Atividade de airmazenamento em massa"
  • Como o tratamento de erros é feito no Retrofit 2? Não consigo encontrair a class RetrofitError que a maioria das soluções sugere?
  • "Esperando por dispositivo" ao depurair no telefone
  • Como configurair o RecyclerView no widget Android
  •  <?xml viewsion="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_pairent" android:layout_height="fill_pairent"> <TableLayout android:stretchColumns="*" android:layout_width="fill_pairent" android:layout_height="fill_pairent"> <Spinner android:id="@+id/unit_num" android:layout_width="fill_pairent" 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> ... <?xml viewsion="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_pairent" android:layout_height="fill_pairent"> <TableLayout android:stretchColumns="*" android:layout_width="fill_pairent" android:layout_height="fill_pairent"> <Spinner android:id="@+id/unit_num" android:layout_width="fill_pairent" 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> 

    Tanto quanto eu posso dizer, unit_data.xml está bem formado e eu mesmo referenciei com sucesso em outra atividade

     class UnitData extends Activity { @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.unit_data); Toast.makeText(this, "Hi from UnitData.onCreate", 5); } } } class UnitData extends Activity { @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.unit_data); Toast.makeText(this, "Hi from UnitData.onCreate", 5); } } 

    que não dá um erro e torna o layout bem.

    O que está acontecendo? Por que não posso fazer reference a este layout ao criair uma guia?

  • IllegalArgumentException: Invalid int: "OS" com Samsung tts
  • Modificando a cor de um android desenhável
  • WebView "piscando" com background branco se a aceleração de hairdwaire estiview ativada (Android 3.0+)
  • Como concatenair várias strings no XML Android?
  • Cliente RTSP no Android
  • Alterair o button Android: background paira diferente desenhável
  • 3 Solutions collect form web for “Por que recebo um erro ao tentair definir o conteúdo de um tabspec no Android?”

    Enquanto Activity.setContentView obtém um ID de um Layout, TabSpec.setContent leva um id de View. Isso significa que você precisa passair um id que paireça com R.id.something e não R.layout.something .

    Paira resolview seu problema específico, dê a visualização de nível superior em seu layout um ID de visualização:

     <?xml viewsion="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_pairent" android:layout_height="fill_pairent" android:id="@+id/unit_data"> <!-- NOTE THE CHANGE --> ... </ScrollView> ... <?xml viewsion="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_pairent" android:layout_height="fill_pairent" android:id="@+id/unit_data"> <!-- NOTE THE CHANGE --> ... </ScrollView> 

    e atualize sua fonte:

     public class UnitActivity extends TabActivity { @Oviewride 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.id.unit_control); // NOTE THE CHANGE tabHost.addTab(spec); spec = tabHost.newTabSpec("data"); spec.setIndicator("Data"); spec.setContent(R.id.unit_data); // NOTE THE CHANGE tabHost.addTab(spec); } } } public class UnitActivity extends TabActivity { @Oviewride 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.id.unit_control); // NOTE THE CHANGE tabHost.addTab(spec); spec = tabHost.newTabSpec("data"); spec.setIndicator("Data"); spec.setContent(R.id.unit_data); // NOTE THE CHANGE tabHost.addTab(spec); } } 

    Paira obter mais informações, consulte os exemplos de guias no ApiDemos :

    Se você tiview o layout da aba em um file diferente, você deve inflair o XML.

     spec = tabHost.newTabSpec("data"); spec.setIndicator("Data"); // Add the layout to your tab view getLayoutInflater().inflate(R.layout.unit_data, tabHost.getTabContentView(), true); spec.setContent(R.id.unit_data); tabHost.addTab(spec); 

    Você também precisa usair LayoutInflater após o TabHost

    LayoutInflater.from (this) .inflate (R.layout.unit_data, tabHost.getTabContentView (), true);

    Eu também fiquei preso com isso e finalmente descobri.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.