更改方向时,onConfigurationChanged()调用两次Landscape to Portrait

时间:2013-02-28 06:55:03

标签: android configuration tabs

我在我的应用程序中遇到了奇怪的问题。我问过here的主要问题。问题android:configChanges="keyboardHidden|orientation"在我的代码中无效。

所以我找到了在我的代码中通过@Override onConfigurationChanged()方法管理它的解决方案来管理方向。但问题仍未得到妥善解决。

目前的问题是onConfigurationChanged()在我们更改方向时会调用两次 风景画像。

如果我们将手机纵向更改为横向更改并正常工作,但现在当用户将手机横向移至纵向时,onConfigurationChanged()将调用并返回相同的方向状态&在第二次通话中,它将返回肖像。

代码:

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

        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
        {
             Log.e("On Config Change", "LANDSCAPE");

            Toast.makeText(getApplicationContext(), "L", Toast.LENGTH_LONG)
                    .show();
        } else 
        {
            Log.e("On Config Change", "PORTRAIT");
            Toast.makeText(getApplicationContext(), "P", Toast.LENGTH_LONG)
                    .show();
        }
    }

日志

first mode its port mode , so change in land mode 

02-28 12:10:06.274: E/On Config Change(540): LANDSCAPE 
02-28 12:10:14.154: E/On Config Change(540): LANDSCAPE
// here after changed the land mode try to chage in port mode then its calling two times as you can see as per the log 
02-28 12:10:14.593: E/On Config Change(540): PORTRAIT
02-28 12:11:39.524: E/On Config Change(540): LANDSCAPE

使用相同问题>>

的另一个查询

当我们更改方向时(在调用onConfigurationChanged时),它将终止当前活动。所以我根据上一个问题在不同的文件夹中有两个布局。所以当我更改屏幕活动时将删除所有数据。那么如何在用户更改手机方向时保存该数据以显示用户。

1 个答案:

答案 0 :(得分:0)

我不确定onConfigurationChanged()如何被调用两次,但为了避免应用中的错误行为,如果现在收到的方向与之前的方向相同,则可以使onConfigurationChanged()的执行无效。 为我工作,希望它也适合你:)