Android OnPrepareOptions菜单在屏幕旋转时被调用两次
扩展Android OnPrepareOptions菜单在屏幕旋转时被调用两次,android,android-orientation,android-optionsmenu,Android,Android Orientation,Android Optionsmenu,扩展活动(而不是AppCompatActivity)的框架应用程序似乎在屏幕旋转时调用了两次onprepareOptions功能表 (我读了这个问题:。但是,我没有在这里使用片段。) 这是错误还是常规行为?有什么办法可以避免这种情况吗 main活动: import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.vie
活动
(而不是AppCompatActivity
)的框架应用程序似乎在屏幕旋转时调用了两次onprepareOptions功能表
(我读了这个问题:。但是,我没有在这里使用片段。)
这是错误还是常规行为?有什么办法可以避免这种情况吗
main活动:
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
public class MainActivity extends Activity {
private int count = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.d("onCreate", "called");
super.onCreate(savedInstanceState);
setContentView(new View(this));
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
Log.d("onPrepareOptionsMenu", "called " + ++count);
return true;
}
}
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.0"
defaultConfig {
applicationId "com.rotationtest"
minSdkVersion 21
targetSdkVersion 25
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
}
03-28 23:58:40.134 3358-3358/com.rotationtest D/onCreate: called
03-28 23:58:40.141 3358-3358/com.rotationtest D/onPrepareOptionsMenu: called 1
03-28 23:58:40.141 3358-3358/com.rotationtest D/onPrepareOptionsMenu: called 2
build.gradle(模块:应用程序):
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
public class MainActivity extends Activity {
private int count = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.d("onCreate", "called");
super.onCreate(savedInstanceState);
setContentView(new View(this));
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
Log.d("onPrepareOptionsMenu", "called " + ++count);
return true;
}
}
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.0"
defaultConfig {
applicationId "com.rotationtest"
minSdkVersion 21
targetSdkVersion 25
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
}
03-28 23:58:40.134 3358-3358/com.rotationtest D/onCreate: called
03-28 23:58:40.141 3358-3358/com.rotationtest D/onPrepareOptionsMenu: called 1
03-28 23:58:40.141 3358-3358/com.rotationtest D/onPrepareOptionsMenu: called 2
logcat(旋转后):
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
public class MainActivity extends Activity {
private int count = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.d("onCreate", "called");
super.onCreate(savedInstanceState);
setContentView(new View(this));
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
Log.d("onPrepareOptionsMenu", "called " + ++count);
return true;
}
}
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.0"
defaultConfig {
applicationId "com.rotationtest"
minSdkVersion 21
targetSdkVersion 25
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
}
03-28 23:58:40.134 3358-3358/com.rotationtest D/onCreate: called
03-28 23:58:40.141 3358-3358/com.rotationtest D/onPrepareOptionsMenu: called 1
03-28 23:58:40.141 3358-3358/com.rotationtest D/onPrepareOptionsMenu: called 2
您需要使用扩展活动的任何原因?
我想扩展AppCombatActivity可以防止此错误。谢谢您的建议。如果我急需解决这个问题,我会使用AppCompatActivity
。现在我只是想知道这是不是一个错误。因此,我也向AOSP报告了()。