我想在不同的XML文件中定义每个标签的内容,以便可以使用Eclipse中的可视化编辑器。也就是说,没有所有标签相互叠放。可视化编辑器似乎甚至不能使用此处提供的XML示例:[link text] [1] [1]:http://developer.android.com/guide/tutorials/views/hello-tabwidget.html“这里”,它只有一个空指针异常。
我尝试在其自己的文件中定义每个点按,例如:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:text="@+id/TextView01" android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
</RelativeLayout>
添加标签时我使用:
mTabHost.addTab(mTabHost.newTabSpec("tab_in").setIndicator("Input").setContent(R.layout.input));
但是这会导致应用程序在启动时崩溃。有没有办法做到这一点?
由于
答案 0 :(得分:3)
只是我的2cents。 使用基于Intent的tabhost我遇到了很多问题。 我遇到了特别奇怪的行为,尤其是ListView小部件。 当我开始将项目重写为基于视图的tabhost而不是使用单独的Intent /活动时,我能够摆脱所有问题
您始终可以按标签分隔XML
简而言之,这就是我所做的:
public class TabOneView implements TabContentFactory {
private LayoutInflater mInflater;
public TabOneView(Context context){
mInflater = LayoutInflater.from(context);
}
@Override
public View createTabContent(String arg0) {
View v = mInflater.inflate(R.layout.tab_one, null);
/**
* Add your code here for buttons/list etc
* An object lookup for your Button:
*/
Button b = (Button)v.findViewById(R.id.btn01);
b.setOnClickListener(mListener);
//...more code
return v;
}
}
答案 1 :(得分:0)
如果您编写TabContentFactory或为每个标签设置单独的活动,则会更方便。
答案 2 :(得分:0)
如果您拥有有效的XML,我认为您正在做的事情会有效。
由于android:text="@+id/TextView01"
部分,TextView会向您提供这些错误。将其更改为android:text="Some literal string"
并且它应该有效(或android:text="@strings/tabtextview01"
假设带有该字符串的strings.xml文件。)
您的XML应该是:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@strings/tabTextView01" /><!--
or android:text="The string literal to display." -->
</RelativeLayout>
答案 3 :(得分:0)
您还可以使用TabHost,它允许您将每个标签设为“活动”