是否可以在单独的XML文件中定义每个选项卡的内容?

时间:2010-06-28 18:16:59

标签: android

我想在不同的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));

但是这会导致应用程序在启动时崩溃。有没有办法做到这一点?

由于

4 个答案:

答案 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,它允许您将每个标签设为“活动”