【问题标题】:Android onConfigurationChanged() is not being called during Orientation program in Android在 Android 的定向程序期间未调用 Android onConfigurationChanged()
【发布时间】:2014-08-26 23:18:13
【问题描述】:

这里是 Android 开发的新手。我目前正在制作一个应用程序,当 Orientation 发生变化时。我想要 LogCat 中的消息。为此,我在 MainActivity 中创建了 onConfigurationChanged(Configuration newConfig) 方法,但在运行程序时没有调用它。

基本上,我想在设备方向更改时停止我的 Activity 重新启动。为此,我修改了清单文件中的活动: 我用过

android:configChanges="orientation|screenSize"  
android:minSdkVersion="8"
android:targetSdkVersion="17" 

在 LogCat 上,我收到如下文本:

Emulator without GPU emulation detected.

应用程序可能在其主线程上做了太多工作。

我已经通过 Google 找到了我们使用上述 targetSdkVersion "17" 的解决方案--

android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|layoutDirection"

它也不起作用。

谁能帮帮我?

这是我的 MainActivity:

       package com.example.orientation;
        import android.app.Activity;
        import android.content.res.Configuration;
        import android.os.Bundle;
        import android.util.Log;
        import android.view.Menu;
        import android.view.MenuItem;
           public class MainActivity extends Activity {
           protected void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.activity_main);

            }


           public void onConfigurationChanged(Configuration newConfig) {

            super.onConfigurationChanged(newConfig);
             Configuration c = getResources().getConfiguration();

                Log.e("Config",""+c);
             if (c.orientation == Configuration.ORIENTATION_PORTRAIT) 
               {
                    // portrait

                   Log.e("On Config Change","portrait");

                  } 
                else if (c.orientation == Configuration.ORIENTATION_LANDSCAPE) 
                 {
                    // landscape
                    Log.e("On Config Change","LANDSCAPE");

                  }

               }

             }

但是,当方向改变时程序正在运行,但没有调用 onConfigurationChanged() 方法。

有人知道为什么会这样吗?

【问题讨论】:

  • 能否在onConfigurationChanged()的第一行添加一个Log.e()语句来确认线程根本没有进入。还可以尝试为onConfigurationChanged() 添加@Override 行,以确保onConfigurationChanged() 的签名正确。如果签名有问题,您的 IDE 编辑器将显示错误。
  • 你在使用setRequestedOrientation()吗?见stackoverflow.com/a/6109206/2105986

标签: android


【解决方案1】:

同样的代码也适用于我。

这是我的活动标签在清单中的样子:

    <activity
        android:name="com.example.tempproject.MainActivity"
        android:configChanges="screenSize|keyboardHidden|orientation"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-21
    • 2013-05-18
    • 1970-01-01
    • 2013-07-26
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    相关资源
    最近更新 更多