2011-12-17 3 views
0

내 기본 활동의 메뉴 버튼을 항상 열고 싶습니다. 나는 다음을 사용했습니다 :항상 Android 메뉴를 열어 두십시오. onOptionsMenu

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

활동에 갈 때 메뉴가 열립니다. 그러나 메뉴 botton 옵션을 눌러 다른 활동으로 이동하고 뒤로 버튼을 누르면 메뉴가 사라지고 다시 가져 오기 위해 "메뉴"키를 눌러야합니다. 나는이 특별한 활동을 위해 메뉴가 항상 열려 있도록하고 싶다.

나는 활동의 onBackPressed을 재정의 할 시도했다 :

@Override 

public void onBackPressed(){ 
    super.onBackPressed(); 
    this.openOptionsMenu(); 
} 

그리고 난에서 onCreate에 this.openOptionsMenu를 추가하는 시도했습니다. 내가 할 때, 그 오류 내 응용 프로그램 충돌 :

12 ~ 17 09 : 19 : 46.674 : ERROR/AndroidRuntime (4940) : 치명적인 예외 : 주요 12 ~ 17 09 : 19 : 46.674 : ERROR/AndroidRuntime (4940) : java.lang.RuntimeException : 활동을 시작할 수 없습니다. ComponentInfo {com.cmu.community/com.cmu.community.HomeActivity} : android.view.WindowManager $ BadTokenException : 창을 추가 할 수 없습니다 - 토큰 널 (null)이 유효하지 않습니다. 당신의 활동은 실행 중입니까? 12-17 09 : 19 : 46.674 : 오류/AndroidRuntime (4940) : android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2663) 12-17 09 : 19 : 46.674 : ERROR/AndroidRuntime (4940) : at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2679) 12 ~ 17 09 : 19 : 46.674 : ERROR/AndroidRuntime (4940) : android.app.ActivityThread.access $ 2300 (ActivityThread.java:125) 12 17 09 : 19 : 46.674 : ERROR/AndroidRuntime (4940) : android.app.ActivityThread $ H.handleMessage (ActivityThread.java:2033) 12-17 09 : 19 : 46.674 : ERROR/AndroidRuntime (4940) : android .os.Handler.dispatchMessage (Handler.java:99) 12-17 09 : 19 : 46.674 : ERROR/AndroidRuntime (4940) : android.os.Looper.loop (Looper.java:123) 12-17 09 : 19 : 46.674 : ERROR/AndroidRuntime (4940) : android.app.ActivityThread.main (Activi (기본 메소드) 12-17 09 : 19 : 46.674 : ERROR/AndroidRuntime (4940) : java.lang.reflect.Method.invoke (Method.java:521) 12-17 09 : 19 : 46.674 : 오류/AndroidRuntime (4940) : com.android.internal.os.ZygoteInit $ MethodAndArgsCaller .run (ZygoteInit.java:868) 12-17 09 : 19 : 46.674 : ERROR/AndroidRuntime (4940) : com.android.internal.os.ZygoteInit.main (ZygoteInit.java:626) 12-17 09 : 19 : 46.674 : ERROR/AndroidRuntime (4940) : dalvik.system.NativeStart.main (기본 메소드) 12-17 09 : 19 : 46.674 : ERROR/AndroidRuntime (4940) : 원인 : android.view.WindowManager $ BadTokenException : 창을 추가 할 수 없습니다 - 토큰 null이 유효하지 않습니다. 당신의 활동은 실행 중입니까? 12-17 09 : 19 : 46.674 : ERROR/AndroidRuntime (4940) android.view.ViewRoot.setView (ViewRoot.java:505)에서 12-17 09 : 19 : 46.674 : ERROR/AndroidRuntime (4940)에서 android.view.WindowManagerImpl.addView (WindowManagerImpl.java:17) 12-17 09 : 19 : 46.674 : android.view.WindowManagerImpl.addView에서 오류/AndroidRuntime (4940) : 12-17 09 : 19 : 46.674 : ERROR/AndroidRuntime (4940) : android.view.Window $ LocalWindowManager.addView (Window.java:424) 12-17 09 : 19 : 46.674 : ERROR/AndroidRuntime (4940) : com. android.internal.policy.impl.PhoneWindow.openPanel (PhoneWindow.java:463) 12-17 09 : 19 : 46.674 : ERROR/AndroidRuntime (4940)에서 com.android.internal.policy.impl.PhoneWindow.openPanel (PhoneWindow.java:378) 12-17 09 : 19 : 46.674 : ERROR/AndroidRuntime (4940) : android.app. Activity.openOptionsMenu (Activity.java:2330) 12-17 09 : 19 : 46.674 : 오류/AndroidRuntime (4940) : com.cmu.community.HomeActivity.onCreate (HomeActivity.java:105) 12-17 09 : 19 : 46.674 : ERROR/AndroidRuntime (4940) : android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1047) 12-17 09 : 19 : 46.674 : ERROR/AndroidRuntime (4940) : android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2627) 12-17 09 : 19 : 46.674 : ERROR/AndroidRuntime (4940) : ... 11 더

누구에게도 해결책이 있습니까?

+0

제발하지 마세요. – CommonsWare

+0

오케이. 나는 Juozas가 아래에 언급 한 것과 같은 이유 때문에 그것을 가지고 간다. – user836200

+0

액션 바를 사용해야 할 때뿐만 아니라 옵션 메뉴는 안드로이드 3.0+와 다르다. 버튼의 작동 방식이 마음에 들지 않으면 이전 버전과의 호환성을 위해 ActionBarSherlock과 같은 것을 사용하여 액션 바를 추가하는 것을 고려해보십시오. – CommonsWare

답변

1

옵션 메뉴는 숨기려는 작업을위한 것입니다. 레이아웃에 항상 액세스 할 수있는 액션 버튼을 추가하십시오.

옵션 메뉴는 실제로 원하는대로 설계되지 않았습니다. 따라서 현재 문제를 어떤 식 으로든 해결하면 QA (또는 사용자)는 곧 다른 문제를 해결할 수 있습니다.

+0

처음에는 레이아웃에 단추가 있었지만 원하는대로 화면에 항목을 배치하기가 어려웠습니다. 옵션 메뉴가 가장 이해하기 쉽고 다른 응용 프로그램에서이 방법을 사용했습니다. onAttachedToWindow가 가장 안전한 방법이라고 생각했습니다. @Override public void onAttachedToWindow() { super.onAttachedToWindow(); openOptionsMenu(); } – user836200

+0

도움 주셔서 감사합니다. – user836200

관련 문제