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