Android标签:活动或视图?

时间:2011-07-31 21:21:02

标签: android tabwidget tabview

我正在尝试编写一个小的Android应用程序来存储食谱作为练习。要添加新配方,我正在尝试使用标签。有三个选项卡,

  1. 成分
  2. 步骤
  3. 媒体
  4. 我希望“Ingredients”有一个ListView,“Steps”有一个ListView,而“Media”有一个图库。我将通过选项菜单中的一些选项添加新的成分,步骤和媒体。完成后,我想将所有内容写入SQLite数据库。

    我想知道我是否应该为每个标签使用不同的活动或只是不同的视图?

    如果我使用不同的活动,是否很难在活动之间传递信息?

    如果我使用不同的视图,那么视图是否必须属于同一个布局文件?例如,tutorial on TabWidgets执行以下操作:

    <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>
    

    因此所有TextView都在同一个FrameLayout中,每个TextView只用于一个选项卡。如果观点更复杂,我认为这会有点混乱,例如:嵌套在其他东西中的东西,它再次嵌套在其他东西中。对每个选项卡使用不同的活动,我可以为每个选项卡指定不同的布局文件。

2 个答案:

答案 0 :(得分:4)

  

我想知道我是否应该为每个标签使用不同的活动或不同的视图?

使用活动作为标签内容已被弃用。您仍然可以这样做,但如果您刚刚开始使用此项目,那么使用视图将是一种更好的方法。

  

如果我使用不同的活动,是否很难在活动之间传递信息?

是和否,但这取决于您的专业水平 - 在活动之间传递信息通常涉及使用Intents(尽管还有其他方式)。虽然它们是相同的,无论它们是独立的还是标签环境的一部分都没有任何区别,但确实需要考虑一下。

  

如果我使用不同的视图,那么视图是否必须属于同一个布局文件?

没有,但是当您使用TabActivity开始时,您可能想要在该教程中尝试该方法。

可以有不同的布局(适用于任何类型的活动)并根据需要自己进行膨胀,但这是一个更复杂的主题。

答案 1 :(得分:1)

我不确定哪个更好,但根据您的问题,在不同活动之间传递信息是否难以实现。

如果您有两个活动,即activityA和activityB,并且您想要将信息从A发送到B,那么您可以使用以下

Intent intent = new Intent(activityAClassName.this, activityBClassName.class);
intent.putExtra("keyName", "value");
startActivity(intent);

然后从activityB中的activityA获取值,并将此代码转换为activityB

Bundle bundle = this.getIntent().getExtras();
string value = bundle.getString("keyName");

希望这会有所帮助