Pergunta

Estou tendo um problema em usar o Tabhost em uma nova intenção de tabactividade do tipo que espero que você possa me apontar na direção certa. Curiosamente, funciona bem quando tento visualizá -lo na intenção original: setContentView (r.layout.main)

Eu recebo um "Forçado Fechado" e no Logcat, recebo o seguinte erro, mesmo que meu Tabhost id = "@android: id/tabhost":

02-18 22: 23: 11.937: Erro/AndroidRuntime (5944): causado por: java.lang.runtimeException: seu conteúdo deve ter um tabhost cujo atributo de identificação é 'Android.R.id.tabhost'

Eu declarei a segunda intenção no arquivo manifesto.xml: xml:

<activity android:name=".NextActivity" android:label="@string/app_name" > 

Dentro da primeira atividade (MainActivity), inicio a segunda intenção (NextActivity), com extras, como segue:

Intent nextActivity = new Intent(MainActivity.this,NextActivity.class); 
Bundle b_next=new Bundle(); 

b_next.putString("s_string", myString); 

nextActivity.putExtras(b_next); 

No meu arquivo nextActivity.java, recebo os extras e tento exibir a visualização do Tabhost:

public class NextActivity extends TabActivity { 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 

        String myString; 
        Bundle b_initial; 

        b_initial = getIntent().getExtras(); 

        myString = b_initial.getString("s_string"); 

     setContentView(R.layout.main); 

        } 
}

Recebo o mesmo erro ao usar o exemplo do Tabhost no site do desenvolvedor do Android (Hellow View):

Main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/tabhost" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <LinearLayout 
        android:orientation="vertical" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"> 
        <TabWidget 
            android:id="@android:id/tabs" 
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content" /> 
        <FrameLayout 
            android:id="@android:id/tabcontent" 
            android:layout_width="fill_parent" 
            android:layout_height="fill_parent"> 
            <TextView 
                android:id="@+id/textview1" 
                android:layout_width="fill_parent" 
                android:layout_height="fill_parent" 
                android:text="this is a tab" /> 
            <TextView 
                android:id="@+id/textview2" 
                android:layout_width="fill_parent" 
                android:layout_height="fill_parent" 
                android:text="this is another tab" /> 
            <TextView 
                android:id="@+id/textview3" 
                android:layout_width="fill_parent" 
                android:layout_height="fill_parent" 
                android:text="this is a third tab" /> 
        </FrameLayout> 
    </LinearLayout> 
</TabHost>

Obrigado antecipadamente pessoal ...

Esclarecimento: É isso que eu realmente recebo do Logcat:

java.lang.nullPointerException
at android.widget.TabHost.dispatchWindowFocusChanged(TabHost.java 285) at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java 640) at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java 640) at android.view.ViewGroup.dispatchWindowFocusChanged (ViewGroup.java 640) em android.view.viewroot.handleMessage (viewroot.java 1645) em android.os.handler.dispatchmessage (handler.java 99) em android.os.looper.loop (looper.java 123) em Android .App.ActivityThread.Main (ActivityThread.java 3948) em java.lang.reflect.method.invokenative (método nativo)
em java.lang.reflect.method.invoke (method.java 521) em com.android.internal.os.zygoteinit $ methodandargscaller.run (zygoteinit.java 782) em com.android.internal.os.os.zygotein.minAin (zgotenotenoten.Internal.Internal.Iss.Ingotein. .Java 540) em dalvik.system.nativestart.main (método nativo)

Foi útil?

Solução

Eu já construí tabhosts com um id de android:id="@+id/tabhost". Isso funciona para você?

Você também pode considerar a construção da sua exibição de guia programaticamente:

    TabHost t = getTabHost();
    TabSpec tab = t.newTabSpec(label)
                   .setIndicator(label, icon)
                   .setContent(intent);
    t.addTab(tab);

Outras dicas

Eu tive o mesmo problema. Felizmente, houve uma solução rápida:

  1. Exclua o R Arquivo.
  2. Aguarde o seu IDE gerar o arquivo.
  3. Lucro!

Eu havia copiado e colado código e notei que no atributo de identificação que eu tinha:

android:id="@+id/tabs" 

Quando o que eu realmente queria era:

android:id="@android:id/tabs"

Eu também encontrei esse problema. Eu tinha um arquivo XML que não estava vinculado ao meu código corretamente no meu res/layout. Quando consertei a nomeação, o problema foi embora.

mesmo que eu tivesse mudado meu main.xml para usar android:id="@android:id/tabhost" Como o erro declarado, ele continuou tentando usar o nome antigo. Finalmente, encontrei o arquivo res/layout-port/main.xml que era idêntico ao main.xml, exceto que usava o Android errado: id. Devo ter adicionado uma visão de retrato acidentalmente e estava segurando o valor antigo. Corrigindo o arquivo retrato ou removendo -o corrige meu problema.

Eu também tive esse erro. Para mim, apareceria após a ofuscação (via progarard), pré -ofuscação, estava bem.

No final, renomeei meu arquivo de layout para algo mais complexo e único, e Proguard não estragou a ligação. Um pouco mais fácil do que seguir o caminho de configuração de proguard.

Portanto, meu problema era semelhante ao Sapphiresun, embora expresso por meio de um processo diferente (e após o eclipse, apenas para tornar as coisas um pouco mais difíceis).

Essa é talvez uma das maneiras mais obscuras de obter esse erro, mas achei que valeu uma menção.

"public class NextActivity extends TabActivity" -Troca de tabactividade ao grupo de atividades.

Quando o problema acontecer quando você deseja que você execute o tabhost no tabhost. está ok.

Estou experimentando o mesmo erro em um projeto de equipe, ao usar o SVN. Às vezes, o Eclipse carrega classes.dex e recursos.ap_ da pasta bin do projeto e outros o recebem via atualização SVN.

Como esses arquivos binários são gerados nas máquinas individuais com código individual, provavelmente é de onde vem o erro.

A limpeza dos arquivos do projeto (Projeto -> Limpe) sempre resolveu o problema para nós!

Eu tive esse problema junto com 'Erro: Opção desconhecida'--no-crunch ''. Se você atualizou o plug-in ADT no Eclipse, mas não atualizou o SDK ao mesmo tempo. Atualizando o gerente do SDK no Eclipse, corrigiu o problema para mim.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top