onPrepareOptionsMenu在屏幕旋转时被调用两次

时间:2017-03-28 15:32:05

标签: android android-orientation android-optionsmenu

扩展Activity(不是AppCompatActivity)的骨架应用似乎在屏幕旋转时调用onPrepareOptionsMenu两次。

(我读过这个问题:Fragment is called twice on screen rotation。但是,我在这里没有使用Fragment。)

这是一个错误还是一个常规行为?有没有解决方法可以避免这种情况?

MainActivity:

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;
    }
}

build.gradle(模块:应用):

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 {
}

logcat(轮换后):

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

1 个答案:

答案 0 :(得分:0)

您需要使用扩展活动的任何原因吗? 我想扩展AppCombatActivity可以防止这个错误。