【发布时间】:2011-07-11 20:33:21
【问题描述】:
我想做一个可以支持纵向和横向的应用程序。布局有两个窗格,左侧是选项,右侧显示结果。选择一个选项后,右窗格会显示它。但是对于肖像没有足够的空间,因此需要单独的活动。每个选项都会产生不同类型的片段,所以当活动之间的所有变化都是在那里添加的片段时,我不想为每个选项创建一个活动。我想将主要活动中的片段传递给新活动,我该怎么做?
【问题讨论】:
我想做一个可以支持纵向和横向的应用程序。布局有两个窗格,左侧是选项,右侧显示结果。选择一个选项后,右窗格会显示它。但是对于肖像没有足够的空间,因此需要单独的活动。每个选项都会产生不同类型的片段,所以当活动之间的所有变化都是在那里添加的片段时,我不想为每个选项创建一个活动。我想将主要活动中的片段传递给新活动,我该怎么做?
【问题讨论】:
编辑:移动了提问者真正想要的内容。
如果您想在创建 Activity 时将数据传递给它,请在 startActivity() 中使用的意图上调用 Intent.putExtra() 的版本。然后,您可以使用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) 的形式访问)作为额外名称。他们建议您在其前面加上您的包名。考虑using resource qualifiers to provide alternative layouts,而不是为不同的布局方向制作单独的活动。
总而言之,在这样的结构中制作两个布局:
/res/layout/yourlayout.xml
/res/layout-land/yourlayout.xml
两个 XML 文件的名称相同。然后在一个中设置您的默认纵向布局,在另一个中设置横向版本。
当您在 onCreate 中扩展布局时(并且当它在运行时更改布局时自动这样做时)它会为您选择正确的布局。
【讨论】:
我想将一个片段从主要活动传递到新活动,我该怎么做?
你不会的。最多,您会遵循@Ribose 的回答——通过额外的将标志传递到活动中,以指示要创建的片段集。
【讨论】: