Ich versuche, eine App für Android zu erstellen, und ich stieß auf das folgende Problem:
Die Anwendung stürzt bei einem bestimmten Telefon ab, wenn ich die Menütaste drücke. Lass mich dir zuerst einige Details geben.
Hier ist das Layout des Menüs und der Funktion onCreateOptionsMenu:
res / menu / main.xml
%Vor%Teil von MainActivity.java
%Vor%Bitte beachten Sie, dass dieser Code von Android Studio generiert wird.
Bisher habe ich es versucht:
Hier ist der Stack-Trace von LogCat:
%Vor%Nachdem ich kürzlich auf dasselbe Problem gestoßen bin, habe ich die Wurzel des Problems gefunden. Das Problem sind Kompatibilitätsprobleme zwischen älteren und neueren Support-Bibliotheken. Es scheint, dass ich abgeschriebene Sachen um meinen Code zusammen mit neueren Sachen verwendete.
Es tut mir leid, dass ich irgendwie abstrakt bin, aber diese Frage ist 4 Monate alt und ich kann mich nicht erinnern, was genau die falschen Codezeilen waren. Wenn der Speicher richtig funktioniert, lag das Problem bei automatisch generierten Methoden aus Android Studio für die Aktivitäten der Anwendungsschublade. Ich habe die Projektvorlage "Schublade-Anwendung" von Android Studio verwendet und mich dafür entschieden, auch sehr alte Android-APIs zu unterstützen, sodass Android Studio die veraltete Android-Unterstützungsbibliothek auswählte.
Der Punkt ist, dass ich das Problem gelöst habe, als ich den Code nur für nicht abgeschriebene Techniken umstrukturierte.
Wenn Sie gegen ein ähnliches Problem ankämpfen, empfehle ich dringend, alles zu entfernen, was Android Studio (ich nehme an, dass Sie Android Studio oder Eclipse verwenden) als abgeschrieben markiert.
Update: Mit Appcompat-v7 Version 22.0.0 scheint onKeyUp
nicht für die Menütaste ausgelöst zu werden. Der ursprüngliche Fehler scheint behoben zu sein, daher werde ich wahrscheinlich die Problemumgehung des Untermenüs entfernen. Leider habe ich das Update auf einem betroffenen LG 4.1 Gerät nicht verifiziert.
Ich habe am Ende eine Workaround für diese, die Benutzer berichten, hat das Problem für sie behoben.
Implementieren Sie Untermenüs, anstatt sich auf das Überlaufmenü zu verlassen. Der Nachteil dabei ist, dass jetzt jedes Gerät den Überlaufknopf in der Aktionsleiste sehen kann, selbst wenn sie eine Menü-Taste haben.
Die folgende Technik stammt von Ссылка
Wandelt alle Überlaufoptionen in Untermenüs um.
Überschreibe onKeyUp
in deinen Aktivitäten, lass es Menu.performIdentifierAction(R.id.menu_overflow, 0);
aufrufen und rufe super.onKeyUp
nicht für keyCode == KEYCODE_MENU
auf.