在活动之间传递片段

时间:2011-07-11 20:33:22

标签: android fragment

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

2 个答案:

答案 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的回答 - 通过额外的内容将标志传递给活动,以指示要创建的片段集。