質問

TabActivity タイプの新しいインテントで TabHost を使用する際に問題が発生しています。正しい方向を教えていただければ幸いです。面白いことに、元の Intent で表示しようとすると正常に動作します。setContentView(R.layout.main)

Tabhost ID = "@android:id/tabhost" であるにもかかわらず、「強制終了」が発生し、logcat 内で次のエラーが発生します。

02-18 22:23:11.937:エラー/Androidランタイム(5944):のせいで:java.lang.RuntimeException:あなたのコンテンツには、ID属性が「android.r.id.tabhost」であるtabhostが必要です

Manifest.xml ファイルで 2 番目のインテントを宣言しました。XML:

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

最初のアクティビティ (MainActivity) 内で、次のように追加機能を備えた 2 番目のインテント (NextActivity) を開始します。

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

b_next.putString("s_string", myString); 

nextActivity.putExtras(b_next); 

NextActivity.java ファイルでエクストラを取得し、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); 

        } 
}

Android 開発者サイト (Hellow View) の TabHost サンプルを使用すると、同じエラーが発生します。

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>

皆さん、よろしくお願いします...

説明:LogCat から実際に得られるものは次のとおりです。

java.lang.NullPointerException
android.widget.tabhost.dispatchwindowfocuschanged(tabhost.java 285)at android.view.viewgroup.dispatchwindowfocuschanged(viewgroup.java 640)at android.view.viewgroup.dispatchwindowocuschanged(grucuschanged(grupgroup)at android.view.viewgroup) iewgroup.dispatchwindowfocuschanged (viewgroup.java 640)at android.view.viewroot.handlemessage(viewroot.java 1645)at android.os.handler.dispatchmessage(handler.java 99)at android.os.looper.loop(looper.java 123) .app.activityThread.main(ActivityThread.java 3948)at java.lang.reflt.method.invokenative(native method)
java.lang.refllect.method.invoke(Method.java 521)でcom.android.internal.os.zygoteinit $ methodandargscaller.run(zygoteinit.java 782)com.android.internal.os.zygoteinit.main(zygoteinit.main(Zygoteinit) .java 540)at dalvik.system.nativestart.main(ネイティブメソッド)

役に立ちましたか?

解決

私は以前android:id="@+id/tabhost"のIDでtabhostsを構築しました。あなたのためにこの仕事をしていますか?

また、プログラムであなたのタブのビューを構築検討することもできます:

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

他のヒント

私も同じ問題を抱えていました。幸いなことに、すぐに解決できる方法がありました。

  1. を削除します R ファイル。
  2. IDE がファイルを生成するまで待ちます。
  3. 利益!

私はコピーして貼り付けコードをし、id属性に私が持っていたことに気づいていた。

android:id="@+id/tabs" 

私が本当に望んでいたことだったときます:

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

私も、この問題が発生しました。私は自分のres /レイアウトに適切に自分のコードにリンクされていなかったXMLファイルを持っていました。私はネーミングを固定すると、問題が去っていきました。

私が述べたエラーのような使用android:id="@android:id/tabhost"に私のmain.xmlを変更したにもかかわらず、それは古い名前を使用しようとし続けました。 ID:最後に、私は間違ったアンドロイドを使用以外main.xmlと同一であったファイルのres /レイアウト・ポート/ main.xmlを見つけました。私は偶然の肖像画のビューを追加しておく必要があり、それは古い値に上に保持されました。いずれかの肖像画ファイルを固定したり、それを除去することが私の問題を修正します。

私も、このエラーが発生しました。私にとっては、それは大丈夫だった難読化前、(ProGuardの経由)難読化の後に表示されます。

最後に、私は、より複雑かつユニークなものに私のレイアウトファイルの名前を変更して、ProGuardのは、リンクアップ混乱しませんでした。 ProGuardののconfigerationの道を行くよりもビットeaserます。

別のプロセスを介して発現もののので、私の問題は(とポスト日食だけより少し難しいものを作るために、)、SapphireSunと同様であった。

これはおそらく、このエラーを取得するには、よりあいまいな方法の一つですが、私は、Aの言及、それは価値があると思っています。

"public class NextActivity extends TabActivity" --change TabActivity ActivityGroupへ。

あなたはtabhost.itで実行tabhostヲたいときに問題が起こる

はokです。

SVNを使用している場合、

私は、チームプロジェクトで同じエラーを経験しています。時には、日食アップロードclasses.dexとプロジェクトのbinフォルダからresources.ap_などはSVNのアップデート経由で入手ます。

これらのバイナリファイルは、個々のコードを使用して、個々のマシン上で生成されるため、

、thatsのは、おそらくどこにエラーがから来ています。

プロジェクトファイルをクリーニング(プロジェクト - >クリーン)は、常に私たちのために問題を解決します。

--no-クランチ「『:

私は』不明なオプションエラー」と一緒にこの問題を持っていました。あなたは、EclipseのプラグインADTの更新が、同時にSDKを更新していない場合。 EclipseでSDK Managerを更新、私のために問題を修正しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top