私はこのようなレイアウトmain.xml
で自分のアプリケーションを起動します。変更アンドロイドレイアウトをプログラム
と設定メニューで、ユーザがそのレイアウトこれです別のレイアウト、小さい(tiny.xml
)、選択することができます。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/relative" xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<TabHost android:id="@android:id/tabhost" ...>
<LinearLayout ...>
<TabWidget.../>
<FrameLayout android:id="@android:id/tabcontent"...>
</FrameLayout>
</LinearLayout>
</TabHost>
</RelativeLayout>
mainActivity
はTabActivity
を拡張し、onCreate
方法で:
...
if (isTiny())
setContentView(R.layout.tiny);
else
setContentView(R.layout.main);
mTabHost = getTabHost();
TabSpec newsTab = mTabHost.newTabSpec(NewsActivity.static_getTabActivityTag());
newsIntent = new Intent(this, NewsActivity.class);
newsTab.setContent(newsIntent);
TextView textView = new TextView(this);
textView.setText(getResources().getString(NewsActivity.static_getIndicatorStringID());
textView.setTextSize(size);
textView.setTextColor(color);
textView.setBackgroundDrawable(background);
tab.setIndicator(textView);
mTabHost.addTab(newsTab);
アイデアは、ユーザーが彼のために新しいレイアウトをロードする設定パネルからレイアウトを変更した場合ので、mainActivity#onRestart
にいくつかのコードを記述することです。それを達成する方法?私はsetContentView
を使用しようとしましたが、ただちに
がクラッシュし、再びタブのビューを作成しても動作しません。ビューは空白です。
ありがとうございます。
更新:アクティビティにタブを作成する方法が追加されました。
更新 setContentViewを複数回実行することは可能です。私の問題はインテントの活動に関連していました。
クラッシュのスタックトレースとは何ですか? 'setContentView()'を複数回呼び出すことはOKですが、そうした後で 'View'参照を再バインドする必要があります(' findViewById'を実行する必要があります)。 –
'setContentView'を2回行うことはできますが、その後にView参照を再初期化する必要があります(ビューごとにfindViewByIdメソッドを再度呼び出す、さまざまなリスナーを追加するなど) – ognian
ちょうどチェックしてもクラッシュしません。ビューは機能しません。たぶん私はそれらを再バインドするのではなく、それらを再作成しているからでしょうか? – pakore