Всегда держите меню Android открытым: onOptionsMenu - PullRequest
0 голосов
/ 17 декабря 2011

Я бы хотел, чтобы кнопка моего меню в моей основной деятельности была всегда открыта. Я использовал:

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

, которое открывает меню, когда я иду в активность. Однако, когда я нажимаю кнопку меню, чтобы перейти к другому занятию и нажимаю кнопку «Назад», меню исчезает и требует, чтобы я нажал клавишу «Меню», чтобы вернуть его. Я бы хотел, чтобы меню всегда было открыто для этого конкретного мероприятия.

Я пытался переопределить операцию на onBackPressed:

@Override

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

И я попытался добавить this.openOptionsMenu в onCreate. Когда я это делаю, мое приложение вылетает с ошибкой:

12-17 09: 19: 46.674: ОШИБКА / AndroidRuntime (4940): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основное 12-17 09: 19: 46.674: ОШИБКА / 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: ОШИБКА / AndroidRuntime (4940): на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2679) 12-17 09: 19: 46.674: ОШИБКА / AndroidRuntime (4940): на android.app.ActivityThread.access $ 2300 (ActivityThread.java:125) 12-17 09: 19: 46.674: ОШИБКА / AndroidRuntime (4940): на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:2033) 12-17 09: 19: 46.674: ОШИБКА / AndroidRuntime (4940): на android.os.Handler.dispatchMessage (Handler.java:99) 12-17 09: 19: 46.674: ОШИБКА / AndroidRuntime (4940): на android.os.Looper.loop (Looper.java:123) 12-17 09: 19: 46.674: ОШИБКА / AndroidRuntime (4940): на android.app.ActivityThread.main (ActivityThread.java:4627) 12-17 09: 19: 46.674: ОШИБКА / AndroidRuntime (4940): в java.lang.reflect.Method.invokeNative (собственный метод) 12-17 09: 19: 46.674: ОШИБКА / 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: ОШИБКА / AndroidRuntime (4940): на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:626) 12-17 09: 19: 46.674: ОШИБКА / AndroidRuntime (4940): в dalvik.system.NativeStart.main (собственный метод) 12-17 09: 19: 46.674: ОШИБКА / AndroidRuntime (4940): вызвано: android.view.WindowManager $ BadTokenException: невозможно добавить окно - нулевой токен недействителен; ваша деятельность работает? 12-17 09: 19: 46.674: ОШИБКА / AndroidRuntime (4940): на android.view.ViewRoot.setView (ViewRoot.java:505) 12-17 09: 19: 46.674: ОШИБКА / AndroidRuntime (4940): на android.view.WindowManagerImpl.addView (WindowManagerImpl.java:177) 12-17 09: 19: 46.674: ОШИБКА / AndroidRuntime (4940): на android.view.WindowManagerImpl.addView (WindowManagerImpl.java:91) 12-17 09: 19: 46.674: ОШИБКА / AndroidRuntime (4940): в android.view.Window $ LocalWindowManager.addView (Window.java:424) 12-17 09: 19: 46.674: ОШИБКА / AndroidRuntime (4940): на com.android.internal.policy.impl.PhoneWindow.openPanel (PhoneWindow.java:463) 12-17 09: 19: 46.674: ОШИБКА / AndroidRuntime (4940): на com.android.internal.policy.impl.PhoneWindow.openPanel (PhoneWindow.java:378) 12-17 09: 19: 46.674: ОШИБКА / 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: ОШИБКА / AndroidRuntime (4940): на android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1047) 12-17 09: 19: 46.674: ОШИБКА / AndroidRuntime (4940): на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2627) 12-17 09: 19: 46.674: ОШИБКА / AndroidRuntime (4940): ... еще 11

У кого-нибудь есть решение для этого?

1 Ответ

1 голос
/ 17 декабря 2011

Меню параметров для действий, которые вы хотите скрыть.Добавьте кнопки в свой макет для действий, которые вы хотите, чтобы всегда были доступны.

Меню параметров действительно не было разработано для того, что вы хотите, чтобы он делал.Таким образом, если вы решите вашу текущую проблему каким-либо образом, ваш QA (или пользователи) скоро найдут другие проблемы для вас.

...