我想要制作一个可以支持竖屏和横屏的应用程序。布局有两个窗格,左侧是选项,右侧显示结果。当选择一个选项时,右侧窗格会显示该选项。但在竖屏模式下空间不足,因此需要一个单独的活动。每个选项都产生不同类型的片段,因此我不想为每个选项制作一个活动,而所有活动之间的区别仅在于添加了哪个片段。我希望从主活动传递一个片段到新的活动中,我该怎么做?
startActivity()
的 intent 上调用 Intent.putExtra()
的某个版本。然后,在活动中可以使用 getIntent().getStringExtra()
(例如)获取字符串 extra。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)
的形式访问)来命名extra的名称。他们建议您在包名称前加上前缀。不要为不同的布局方向创建单独的活动,而是考虑使用资源限定符提供替代布局。
总之,按以下结构制作两个布局:
/res/layout/yourlayout.xml
/res/layout-land/yourlayout.xml
当两个XML文件的名称相同时,可以在其中一个文件中创建默认的竖屏布局,在另一个文件中创建横屏版本。
当您在onCreate
中填充布局时(以及在运行时自动进行布局更改时),它会为您选择正确的布局。