3

TabActivityタイプの新しいインテントでTabHostを使用する際に問題が発生しました。これにより、正しい方向を示すことができます。おかしなことに、元のインテントで表示しようとすると正常に動作します:setContentView(R.layout.main)

「強制終了」が発生し、logcat内で、Tabhost id = "@ android:id / tabhost"であっても、次のエラーが発生します。

02-18 22:23:11.937:エラー/ AndroidRuntime(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 Developerサイト(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
at android.widget.TabHost.dispatchWindowFocusChanged(TabHost.java 285)at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java 640)at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java 640)atandroid。 view.ViewGroup.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)at android.app.ActivityThread.main(ActivityThread.java 3948)at java.lang.reflect.Method.invokeNative(Native Method)
java.lang.reflect.Method.invoke(Method.java 521)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java 782)at com.android.internal.os.ZygoteInit.main(ZygoteInit .java 540)dalvik.system.NativeStart.main(ネイティブメソッド)

4

9 に答える 9

7

私も同じ問題を抱えていました。幸いなことに、簡単な修正がありました:

  1. ファイルを削除しRます。
  2. IDEがファイルを生成するのを待ちます。
  3. 利益!
于 2011-06-23T17:46:41.530 に答える
3

コードをコピーして貼り付けたところ、id属性に次のようなものがあることに気付きました。

android:id="@+id/tabs" 

私が本当に欲しかったのは:

android:id="@android:id/tabs"
于 2011-07-29T16:48:18.043 に答える
2

以前、IDが。のタブホストを作成しましたandroid:id="@+id/tabhost"。これはあなたのために働きますか?

プログラムでタブビューを作成することも検討できます。

    TabHost t = getTabHost();
    TabSpec tab = t.newTabSpec(label)
                   .setIndicator(label, icon)
                   .setContent(intent);
    t.addTab(tab);
于 2010-02-19T15:42:29.947 に答える
2

私もこの問題に遭遇しました。res/layoutでコードに対して適切にリンクされていないXMLファイルがありました。名前を修正すると、問題は解決しました。

于 2010-09-30T02:35:41.780 に答える
2

記載されているエラーのようにmain.xmlを使用するように変更しましたandroid:id="@android:id/tabhost"が、古い名前を使用しようとし続けました。最後に、間違ったandroid:idを使用したことを除いて、main.xmlと同じファイルres / layout-port/main.xmlを見つけました。誤ってポートレートビューを追加したに違いありませんが、それは古い値を保持していました。ポートレートファイルを修正するか、削除することで問題が解決します。

于 2011-09-23T15:51:13.690 に答える
1

私もこのエラーがありました。私にとっては、(ProGuardを介して)難読化した後に表示されますが、難読化前は問題ありませんでした。

結局、レイアウトファイルの名前をより複雑でユニークなものに変更しましたが、ProGuardはリンクを台無しにしませんでした。ProGuard構成パスをたどるよりも少し簡単です。

ですから、私の問題はSapphireSunに似ていましたが、別のプロセスで表現されていました(そして、少し難しいことをするために、日食を投稿しました)。

これはおそらく、このエラーを取得するためのよりあいまいな方法の1つですが、言及する価値があると思いました。

于 2011-02-03T07:42:28.400 に答える
1

"public class NextActivity extends TabActivity"--TabActivityをActivityGroupに変更します。

tabhost.itでtabhostを実行したいときに問題が発生した場合は問題ありません。

于 2011-08-06T02:38:42.580 に答える
0

SVNを使用しているときに、チームプロジェクトで同じエラーが発生します。Eclipseはプロジェクトのbinフォルダーからclasses.dexとresources.ap_をアップロードし、他の人はSVN更新を介してそれを取得することがあります。

これらのバイナリファイルは、個々のコードを使用して個々のマシンで生成されるため、おそらくエラーの原因です。

プロジェクトファイルをクリーンアップする([プロジェクト]-> [クリーン])と、常に問題が解決しました。

于 2011-07-23T18:00:47.303 に答える
0

この問題は、「エラー:不明なオプション」-「クランチなし」とともに発生しました。EclipseでADTプラグインを更新したが、同時にSDKを更新していない場合。EclipseでSDKManagerを更新し、問題を修正しました。

于 2011-11-16T06:24:39.627 に答える