2017-03-28 14 views
0

Activity (AppCompatActivity이 아님)을 확장하는 스 켈러튼 앱이 화면 회전시 onPrepareOptionsMenu을 두 번 호출하는 것처럼 보입니다.화면 회전시 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 { 
} 

로그 캣 (회전 이후) :

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 

답변

0

확장 활동을 사용해야하는 이유가 무엇입니까? AppCombatActivity를 확장하면이 버그를 방지 할 수 있습니다.

+1

의견을 보내 주셔서 감사합니다. 이 문제를 긴급히 해결해야한다면'AppCompatActivity'를 사용할 것입니다. 이제 이것이 버그인지 아닌지 궁금합니다. 그래서 AOSP (https://code.google.com/p/android/issues/detail?id=270034)에도보고했습니다. – hata