这里是Android开发的新手。我正在制作一个应用程序,当Orientation改变时。我想在我的LogCat中使用该消息。为此,我在MainActivity中创建了onConfigurationChanged(Configuration newConfig)方法,但是在运行程序时没有调用它。
基本上,我想停止我的Activity在设备方向更改时重新启动。为此,我修改了清单文件中的活动: 我用了
android:configChanges="orientation|screenSize"
android:minSdkVersion="8"
android:targetSdkVersion="17"
ON 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()方法。
有谁知道为什么会这样?
答案 0 :(得分:0)
完全相同的代码对我有用。
这是我的活动标签在清单中的样子:
<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>