2010-05-05 3 views
10

에서 작동하지 않습니다 활동 같은 것을 사용하지 않고 표시 한 후 openOptionsMenu를 호출하는 다른 방법이 있나요 :안드로이드 - openOptionsMenu가에서 onCreate

 
new Handler().postDelayed(new Runnable() { 
      public void run() { 
       openOptionsMenu(); 
      } 
     }, 1000); 

참조 : http://groups.google.com/group/android-beginners/browse_frm/thread/b10a8ea840c07725/1ce48bb147a3ed1a?#1ce48bb147a3ed1a

편집 : 나는 감사하겠습니다을 이 같은 예 :

 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // Now I guess something like Window.Callback.onAttachedToWindow(...) should be done? 
} 
+0

솔루션은 정말 매우 허약 한 것을 – Casebash

답변

21

는 다시 Activity 바라 보았다, 그것은 방법있었다은 API 레벨 5부터 Window.Callback에서 상속되었습니다.이 레벨을 사용하는 경우 Activity에서이 메소드를 재정의해야합니다.

@Override 
public void onAttachedToWindow() { 
    super.onAttachedToWindow(); 
    openOptionsMenu(); 
} 

당신이 버전 이전에 5를 사용하는 경우, 당신은 대신 onAttachedToWindow method in View를 재정의해야합니다. 코드에서 View을 만들면 매우 쉽습니다. 그것이 XMl에서 생성된다면 훨씬 더 어렵지 않습니다. instructions here이 도움이 될 것입니다. 나는이 재정을 삽입 할 위치

+0

그리고 활동으로 onAttachedToWindow하지 않습니다? – kape123

+1

@ kape123 : 추가 정보를 추가했습니다. 이게 도움이 되었기를 바랍니다. – Casebash

+0

완벽한 예를 들어 주시겠습니까? 미리 감사드립니다! – kape123

-1

내 솔루션

//Open menu manually from code 
    Timer timing = new Timer(); 
    timing.schedule(new TimerTask() { 

       /** 
       * {@inheritDoc} 
       */ 
       @Override 
       public void run() { 

        runOnUiThread(new Runnable() { 

         @Override 
         public void run() { 
          openOptionsMenu(); 
         } 
        }); 

       } 
      }, 1000); 
+0

... 그건 제가 제 질문에 이미 게시 한 코드의 더 나쁜 버전입니다 – kape123

+0

이봐, 너 해봤 니? 나는 시장에서 내 자신의 응용 프로그램에서 그것을 사용하고 있습니다. – RubyDeveloper

+0

일반적으로 전용 콜백을 사용할 수있는 경우 시작 /로드 중에 타이머 기반 스케줄링을 사용하는 것은 좋지 않습니다. – ohaleck

관련 문제