我有一个布局main.xml
这样开始了我的申请:更改Android的布局编程
而且在设置菜单中,用户可以选择另一种布局,小(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()'应该没问题,但是你需要重新绑定任何'View'引用(即通过'findViewById'运行)。 – 2010-12-15 15:34:44
你可以'setContentView'两次,但是你需要在之后重新初始化视图引用(为每个视图再次调用findViewById方法,添加各种监听器等等) – ognian 2010-12-15 15:35:36
我刚刚检查过,它不会崩溃,但意见不起作用。也许是因为我正在重新创建它们而不是重新绑定它们? – pakore 2010-12-15 15:39:25