我想制作一个可以支持肖像和风景的应用程序。布局有两个窗格,左边是选项,右边显示结果。选择某个选项后,右侧窗格会显示该选项。但是对于肖像而言,没有足够的空间,因此需要单独的活动。每个选项都会产生不同类型的片段,所以当活动之间发生的所有变化都是在那里添加片段时,我不想为每个选项创建一个活动。我想将一个片段从主要活动传递到新活动,我该怎么做?
答案 0 :(得分:6)
编辑:移动了提问者实际想要的位置。
如果您想在创建活动时将数据传递给活动,请在.putExtra()
中使用的意图上调用Intent 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)
形式访问)来获取额外的名称。他们建议您在包装名称前加上前缀。不考虑为不同的布局方向制作separete活动,而是考虑using resource qualifiers to provide alternative layouts。
总结一下,在结构中制作两个布局:
/res/layout/yourlayout.xml
/res/layout-land/yourlayout.xml
两个XML文件的名称相同。然后在一个中创建默认纵向布局,在另一个中创建横向版本。
当您在onCreate
中夸大布局时(以及在运行时更改布局时自动执行此布局),它将为您选择正确的布局。
答案 1 :(得分:5)
我想将主要活动中的片段传递给新活动,我该怎么做?
你不会。最多,您可以关注@ Ribose的回答 - 通过额外的内容将标志传递给活动,以指示要创建的片段集。