2012-08-24 5 views
0

나는는 한 번만 호출의 onConfigurationChanged 매 2

I 오버라이드의 onConfigurationChanged 세로에서 가로로 전화를 돌려 그들 사이를 전환과 같은 새로운 활동을 시작할 수 있습니다이 명하는 행동이 AB와 사용자가 :

@Override 
    public void onConfigurationChanged(Configuration newConfig) { 

     super.onConfigurationChanged(newConfig); 

     if (newConfig.orientation==ActivityInfo.SCREEN_ORIENTATION_USER || newConfig.orientation==ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE || newConfig.orientation==ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE) 
     { 
      final TabGroupActivity tabGroupActivity = (TabGroupActivity) this.getParent(); 
      final Intent arIntent = new Intent(tabGroupActivity, ARActivity.class); 
      tabGroupActivity.startActivity(arIntent); 
     } 



    } 

을 그것은 처음에는 잘 작동하지만 두 번째, 세 번째는 괜찮습니다. 두 번씩 작동합니다.

실패 할 때마다 액티비티 A가 가로 방향으로 회전하고 오버라이드 된 OnConfigurationChanged가 호출되지 않은 것으로 나타났습니다. .

제안 사항? 여기

@Override 
public void onConfigurationChanged(Configuration newConfig) { 

    super.onConfigurationChanged(newConfig); 

    Log.i(TAG,"onConfigurationChanged orientation : " + newConfig.orientation); 

     if (!mProgressDialog.isShowing() && (newConfig.orientation==ActivityInfo.SCREEN_ORIENTATION_PORTRAIT|| newConfig.orientation==ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT)) 
     { 
      mOrientationTimer.cancel(); 

      this.finish(); 

     } 


} 
+1

다른 레이아웃을 적용했기 때문에 두 가지 활동이 있습니까? 이런 식으로 활동을 시작하는 이유를 파악하려고합니다. – ainesophaur

답변

0
android:configChanges="keyboardHidden|orientation" 

매니페스트 파일에 활동에 추가 활동 B에 ConfigurationChanged 코드입니다.

+0

android : configChanges가 매니페스트 파일 –

0

두 가지 모두에서 onConfigurationChanged을 구현해야합니다. 아마도 당신은 그것을 잊어 버렸을 것입니다. 또는 두 활동에 대한 매니페스트를 설정하는 것을 잊어 버린 경우 android:configChanges="keyboardHidden|orientation"

+0

에서 구성되었습니다. onConfigurationChanged가 두 가지 활동에 구현되었습니다. 방금 내 질문을 편집했습니다. android : configChanges도 매니페스트 파일에 구성됩니다. –