Android活动已轮换

时间:2018-12-06 01:06:26

标签: java android android-intent android-activity

从另一个具有不同屏幕方向的活动中回来后,我有一个活动被旋转的问题。

请允许我描述重现此行为的步骤:

1。我在清单中声明了一个活动,如下所示:

<activity
android:name=".JobActivity"
android:label="@string/title_activity_job"
android:screenOrientation="portrait" />

如您所见,screenOrientation设置为portrait

  1. 在此活动中,我启动了另一个具有以下意图的活动:

    Intent jobDetailsIntent = new Intent(mActivity, JobDetailActivity.class); startActivity(cameraIntent);

此“活动”屏幕方向被声明为landscape

<activity
android:name=".JobDetailActivity"
android:screenOrientation="landscape"
android:theme="@style/ThemeFullscreen" />
  1. 活动JobDetailActivity按下按钮时,启动另一个活动以等待结果。

startActivityForResult(getIntent(activity), requestCode);

另一个活动被声明为portrait

<activity
android:name=".QuestionsActivity"
android:screenOrientation="portrait"
android:theme="@style/ThemeFullscreen.Color" />
  1. 当我从另一个活动获得结果时,在做了几件事之后,我打电话给finish以返回第一个活动(JobActivity)。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
    // Some other stuff
    this.finish();
}

}

这时,当我回到JobActivity时,会看到landscape中的Activity(记住它被声明为portrait),然后再返回到原始位置。

总结:

A (portrait) -> B (landscape) -> C (portrait)

收到C的结果并返回到B

A (portrait) -> B (landscape)

从B呼叫finish

A (landscape)

一秒钟后

A (portrait)

有什么想法可能会发生这种情况吗?谢谢大家,非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我听不懂这段代码:

Intent jobDetailsIntent = new Intent(mActivity, JobDetailActivity.class);
startActivity(cameraIntent);

意图声明的名称与用于启动活动的意图之间是有区别的。

也许问题出在这里。

谢谢。