【问题标题】:onConfigurationChanged not getting called even with manifest config changes - Why?即使清单配置更改,onConfigurationChanged 也不会被调用 - 为什么?
【发布时间】:2014-04-02 02:44:21
【问题描述】:

我知道这个问题很糟糕,done thousands of times;但说真的,我已经被困了 4 个小时试图解决这个问题。从 2009 年到今天,我访问了每个链接,所有链接都给出了相同的解决方案(**** 知道为什么)不适用于我的案例。

这是我清单中的活动:

<activity 
android:name="com.example.activities.CamerasActivity"
android:configChanges="orientation|screenSize">
</activity> 

我正在使用 SDK 4.0 或更高版本:

<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="19" />

这是我的课:

public class CamerasActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.cameras_activity);

        VideoView videoView = (VideoView)findViewById(R.id.action_cameras);
        videoView.setVideoPath("/storage/sdcard/teste.mp4");
        videoView.start();
    }

    //Still not working
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);

        if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE)
        {
            Log.d("System.out", "Welcome to Landscape Mode");
        }
        else if(newConfig.orientation==Configuration.ORIENTATION_PORTRAIT)
        {
            Log.d("System.out", "Welcome to portrait mode");
        }
    }
}

当我像这样运行我的应用程序时,我可以在纵向模式下看到,工作正常。如果我在清单上使用android:screenOrientation="landscape",我可以看到在横向模式下是强制的。这意味着我的布局很好,但为什么我的onConfigurationChanged 在我尝试旋转屏幕时没有被调用?我错过了什么?

编辑:

AVD 配置:

启用自动旋转:

视频原样: 我的 logcat 上没有输出。

【问题讨论】:

  • onConfigurationChanged 方法在您物理旋转 Android 设备时被调用。您是否亲自转动过您的设备?
  • 不,我想我可以在 AVD 上看到这个动作 - 没有找到任何参考告诉我旋转仅适用于真实设备;我认为您可以将其发布为答案。
  • 要在 AVD 上查看,请按 Ctrl+F11 更改/模拟屏幕方向。
  • 但是我确实使用了 Ctrl + F11 并且仍然看不到布局旋转...
  • 忘了说您需要先通过 AVD 的设置选项启用屏幕方向,然后按 Ctrl+F11。

标签: android manifest screen-rotation onconfigurationchanged


【解决方案1】:

onConfigurationChanged 方法在您物理旋转 Android 设备时被调用。因此,您需要旋转设备才能看到该方法被调用。

注意:当您更改语言环境等时,也会调用 onConfigurationChanged。有关详细信息,请参阅here

另外,我会为 android:configChanges 指令设置这些值:

android:configChanges="orientation|screenSize|layoutDirection

另外,问题61671 可能与本文中描述的屏幕方向问题有关。 截至 2014 年 4 月,Google 尚未解决此缺陷/错误。

解决方法

如此 SO link 中所述,如果设备类型设置为 通用 7" 平板电脑而不是 Nexus 7,则屏幕方向可能会起作用。

【讨论】:

  • 我在 AVD 编辑上找不到设置选项,我正在快速研究以找到它;您能否编辑您的答案并发布有关此启用的更多详细信息?因此我可以接受答案
  • 里面的AVD已经启用了吗?你的意思是在 Eclipse 配置之外?
  • 不,我的意思是在 AVD 内部。发布您的 AVD 配置。奇怪的是它不能用CTRL+F11旋转并且在AVD中启用了屏幕旋转!...
  • 布局方向无效;从哪里可以检索 avd 配置信息?我的意思是,是否有某种 txt 文件,一切都已启动?因为我在看 ddms 的观点,但我找不到......
  • 不,只需发布​​屏幕转储,以便我查看您为 AVD 设置的内容。通常,我会为 AVD 提供以下选项:RAM:256VM Heap:64Internal storage:200、SD 卡 尺寸:50。并选择 Hardware keyboard present 选项。
猜你喜欢
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-06
  • 2011-07-07
  • 1970-01-01
  • 2018-04-15
  • 2017-08-19
相关资源
最近更新 更多