【问题标题】:Orientation change using fragments - wrong activity start使用片段改变方向 - 错误的活动开始
【发布时间】:2011-10-08 04:15:53
【问题描述】:

我有使用片段的应用程序。根据屏幕尺寸和方向,我会显示不同的布局:
1.布局片段 - 选择列表
2。 layout-fragment - 显示选择的选项
我在处理大屏幕中的方向更改时遇到问题。在纵向模式下,我在一个布局中显示两个片段,但在横向模式下,如果用户选择显示某事,我只显示第二个片段活动。当在此状态下,方向更改回纵向模式时,我想再次显示两个片段,但我再次显示第二个布局片段活动。
我知道这是 android 活动管理,但最好的方法是什么按照我的意愿工作(始终以纵向模式显示 1 和 2 片段)?

感谢您的任何建议!

【问题讨论】:

  • 查看FragmentLayout android 开发人员的 api 演示示例。不幸的是,这个示例没有保持方向变化的选择,但确实展示了如何处理方向变化
  • 不幸的是,我需要的不止这些。

标签: android layout android-layout android-activity android-fragments


【解决方案1】:

这是因为您的第二个活动(仅显示一个片段)是在方向更改时重新创建的。

您可以在这里做的是检查 onCreate 中的方向,如果纵向 - 以合适的意图启动 Activity_1,以便它可以启动第二个片段以获取正确的详细信息。当然,您还必须编辑 Activity_1 以在 onCreate 中检查此意图。

一些示例代码,其中意图具有操作 ACTION_VIEW 和细节对象的 uri。

Activity_2(一个片段 - 只能用于横向)

// in method onCreate
// assume orientation is checked and boolean set
if (isPortraitOrientation) {
   startActivity(suitableIntent); // ACTION_VIEW with uri
   finish();
   return;
} else {
   // load fragment
}

Activity_1(如果方向允许,显示两个片段

// check intent
// assume orientation checked and boolean set  
final Intent intent = getIntent();
final String action = intent.getAction();
Log.v(TAG, " - action: " + action);
if (isPortraitOrientation && Intent.ACTION_VIEW.equals(action)) {
   // load fragment with selected choice
}

推荐的方向检查: Check orientation on Android phone

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多