新しいインテントでの TabHost レイアウトの表示に関する問題
-
21-09-2019 - |
質問
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);
他のヒント
私も同じ問題を抱えていました。幸いなことに、すぐに解決できる方法がありました。
- を削除します
R
ファイル。 - IDE がファイルを生成するまで待ちます。
- 利益!
私はコピーして貼り付けコードをし、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へ。
はokです。
私は、チームプロジェクトで同じエラーを経験しています。時には、日食アップロードclasses.dexとプロジェクトのbinフォルダからresources.ap_などはSVNのアップデート経由で入手ます。
これらのバイナリファイルは、個々のコードを使用して、個々のマシン上で生成されるため、、thatsのは、おそらくどこにエラーがから来ています。
プロジェクトファイルをクリーニング(プロジェクト - >クリーン)は、常に私たちのために問題を解決します。
!私は』不明なオプションエラー」と一緒にこの問題を持っていました。あなたは、EclipseのプラグインADTの更新が、同時にSDKを更新していない場合。 EclipseでSDK Managerを更新、私のために問題を修正しました。