【发布时间】: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