如何处理活动方向更改以不重新创建活动?

时间:2015-09-16 03:27:46

标签: java android

我使用startActivityForResult()启动一个活动,但是在orientatikn更改后,我返回到onActivityResult()方法,requestCode不一样。如果屏幕方向是横向模式,我想使用不同的布局。 我在清单中尝试了使用orientation和screenSize参数的配置,但是如果我使用这个布局没有改变为横向布局。 我使用requestCode = 0启动了活动,但是在方向改变之后,我看到requestCode = 66357或者什么。

3 个答案:

答案 0 :(得分:0)

创建两种类型的布局文件夹。 “布局 - 土地”和“布局 - 港口”。将所需的xml放在具有相同名称的目录中。

答案 1 :(得分:0)

  

您可以声明您的活动本身处理配置更改,这会阻止系统重新启动您的活动。

在AndriodMainfest.xml中定义configChanges

<activity android:name=".ResultActivity"
          android:configChanges="orientation|keyboardHidden"
          android:label="@string/app_name">

然后在ResultActivity.java中(你调用get result)定义onConfigurationChanged()

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
        Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
    }
}

官方link

答案 2 :(得分:-1)

您有两种选择:

A)将您的应用设置为不旋转。

B)或者接受世界还不完美并修改你的应用来处理配置变化