7

我想做一个可以支持纵向和横向的应用程序。布局有两个窗格,左侧是选项,右侧显示结果。选择一个选项后,右窗格会显示它。但是对于肖像没有足够的空间,因此需要单独的活动。每个选项都会产生不同类型的片段,所以当活动之间的所有变化都是在那里添加的片段时,我不想为每个选项创建一个活动。我想将主要活动中的片段传递给新活动,我该怎么做?

4

2 回答 2

6

编辑:移动了询问者真正想要的内容。

如果您想在创建 Activity 时将数据传递给它,.putExtra()startActivity(). 然后,您可以使用getIntent().getStringExtra()(例如)在活动中获取额外的字符串。

假设您在第一个名为myString.

Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra(EXTRA_NAME_CONSTANT, myString);
startActivity(intent);

现在在您的新活动中,onCreate您将执行以下操作:

String myString = this.getIntent()
        .getStringExtra(EXTRA_NAME_CONSTANT, "default return value here");

几点注意事项:

  • 为此EXTRA_NAME_CONSTANT,我的意思是创建一个形式为“your.package.name.SomeString”的字符串常量,例如“com.example.MyString”。就我个人而言,我什至会使用一个资源(以表单访问getString(R.string.extra_my_string))作为额外的名称。他们建议你在它前面加上你的包名。
  • 您可以放置​​和获取多种类型的数据,从字符串到数组,甚至是可序列化的数据。

与其为不同的布局方向制作单独的活动,不如考虑使用资源限定符来提供替代布局

总而言之,在一个结构中制作两个布局,如下所示:

/res/layout/yourlayout.xml
/res/layout-land/yourlayout.xml

两个 XML 文件的名称相同。然后在一个中制作默认的纵向布局,在另一个中制作横向版本。

当您在其中扩展布局时onCreate(并且当它在运行时更改布局时自动这样做时)它将为您选择正确的布局。

于 2011-07-11T20:59:26.730 回答
5

我想将主要活动中的片段传递给新活动,我该怎么做?

你不会的。最多,您会遵循@Ribose 的回答——通过额外的将标志传递到活动中,以指示要创建的片段集。

于 2011-07-11T23:27:41.710 回答