在活动之间传递片段

Han*_*ank 7 android fragment

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

Rib*_*ose 6

编辑:移动了提问者实际想要的顶部.

如果要在创建活动时将数据传递给活动,请在其中使用的意图.putExtra()上调用Intent版本startActivity().然后,您可以使用getIntent().getStringExtra()(例如)在活动中获取额外的字符串.

假设您在第一个被调用的活动中有一段字符串数据myString.

Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra(EXTRA_NAME_CONSTANT, myString);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

现在,在你的新活动中onCreate你会做:

String myString = this.getIntent()
        .getStringExtra(EXTRA_NAME_CONSTANT, "default return value here");
Run Code Online (Sandbox Code Playgroud)

几点说明:

  • 为此EXTRA_NAME_CONSTANT,我的意思是使字符串常量为"your.package.name.SomeString",例如"com.example.MyString".就个人而言,我甚至会使用资源(在表单中访问getString(R.string.extra_my_string))来获取额外的名称.他们建议您在其前面加上您的包名称.
  • 您可以将从字符串到数组的多种类型的数据放入并获取甚至可序列化的数据.

考虑使用资源限定符来提供替代布局,而不是针对不同的布局方向进行separete活动.

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

/res/layout/yourlayout.xml
/res/layout-land/yourlayout.xml
Run Code Online (Sandbox Code Playgroud)

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

当您在布局中充气时onCreate(以及在运行期间布局更改时自动执行此操作),它将为您选择正确的布局.


Com*_*are 5

我想将一个片段从主要活动传递到新活动,我该怎么做?

你不会.最多,您将关注@ Ribose的答案 - 通过额外的内容将标志传递给活动,以指示要创建的片段集.