Ich habe einige Code, der erfolgreich kompiliert mit ViewTreeObserver#removeOnGlobalLayoutListener(...)
und wenn es ausgeführt wird, löst diese Methode NoSuchMethodError
. Warum?Warum wirft removeOnGlobalLayoutListener einen NoSuchMethodError?
Antwort
Es gibt zwei Methoden in ViewTreeObserver
mit fast den gleichen Namen.
removeOnGlobalLayoutListener(ViewTreeObserver.OnGlobalLayoutListener victim)
(auf dann global) ein Verfahren ist, das in API hinzugefügt wurde 16. Es ersetzt
removeGlobalOnLayoutListener(ViewTreeObserver.OnGlobalLayoutListener victim)
(globale dann auf), das existiert seit API 1, ist aber jetzt veraltet.
Beide Methoden können zur Kompilierungszeit angezeigt werden (wenn Sie gegen Jellybean oder höher bauen), aber die neuere Version wird auf Jellybean-Geräten fehlschlagen.
Dieser Code trotzt der Fehler:
try {
thing.removeOnGlobalLayoutListener(victim);
} catch (NoSuchMethodError x) {
thing.removeGlobalOnLayoutListener(victim);
}
So funktioniert dieser Code:
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
thing.removeGlobalOnLayoutListener(victim);
} else {
thing.removeOnGlobalLayoutListener(victim);
}
Danke Sie für das Teilen Ihres Problems und Ihrer Lösung. Ich habe Ihren Code ausprobiert und sehe mich immer noch mit dem Problem konfrontiert. Würden Sie sich meine Frage unter http://stackoverflow.com/questions/18285540/stop-listening-for-more-listener-events ansehen? – Geek
Wow, es ist, als würde Google versuchen, Entwickler zu trollen. Danke für diese Lösung! –
Ha, ich weiß was du meinst! Ich denke, es ist für die Konsistenz mit "ViewTreeObserver # addOnGlobalLayoutListener (ViewTreeObserver.OnGlobalLayoutListener)" und jemand machte einen Fehler in Android 1.5, und niemand kümmerte sich darum, es zu beheben, bis Android 4 .... –
Ich nehme an, Sie sprechen über removeOnGlobalLayoutListener von ViewTreeObserver-Klasse. Diese Methode wurde in API-Ebene 16 hinzugefügt. Meine beste Vermutung ist, dass Sie versuchen, es auf einem Gerät zu verwenden, auf dem eine alte Version von Android ausgeführt wird, weshalb es nicht gefunden werden kann.
Ich weiß, ich fand das gerade heraus und dachte, es wäre wert, jedem etwas über 'removeGlobalOnLayoutListener (...) '(veraltet, API 1) zu erzählen :) –
I-Code arbeiten, haben Sie den Code
public static void removeOnGlobalLayoutListener(View v, ViewTreeObserver.OnGlobalLayoutListener listener){
if (Build.VERSION.SDK_INT < 16) {
v.getViewTreeObserver().removeGlobalOnLayoutListener(listener);
} else {
v.getViewTreeObserver().removeOnGlobalLayoutListener(listener);
}
}
- 1. Warum wirft KafkaUtils.createDirectStream einen NoSuchMethodError?
- 2. PowerMock wirft NoSuchMethodError (setMockName)
- 3. Erstellen EasyMock Mock wirft NoSuchMethodError Ausnahme
- 4. Jetty 9.0 eingebettet und RestEasy 3.0 wirft NoSuchMethodError
- 5. Warum Python informixdb Paket einen Fehler wirft!
- 6. SetJmp/LongJmp: Warum wirft dies einen segfault?
- 7. Warum wirft meine Abfrage einen falschen Syntaxfehler?
- 8. Warum wirft diese Methode einen Segmentierungsfehler?
- 9. Warum wirft docker-compose einen Fehler?
- 10. Warum wirft meine Singleton-Klasse einen StackOverflowerror?
- 11. Warum wirft dieser rekursive Code einen segfault?
- 12. Warum Byte.parseByte ("10000001", 2) einen NFE wirft?
- 13. Decimal.Parse wirft einen Format
- 14. Warum wirft Android NullPointerException?
- 15. Warum wirft PyMongo AutoReconnect?
- 16. Warum wirft Regex_match "Komplexitätsausnahme"?
- 17. Warum wirft cmd.executeNonQuery() ManagedDataAccess.Client.OracleException?
- 18. Warum wirft Observable.Generate() System.StackOverflowException?
- 19. Warum wirft EndGetResponse ArgumentNullException?
- 20. Warum String wirft Nullpointer
- 21. Warum wirft IPAddress.MapToIPv4() ArgumentOutOfRangeException?
- 22. NoSuchMethodError: org.slf4j.helpers.MessageFormatter.format
- 23. Java NoSuchMethodError
- 24. Hibernate NoSuchMethodError
- 25. NoSuchMethodError mit Spring MutableValues
- 26. Warum nicht __getitem__ wirft Typeerror
- 27. Sys.exit() wirft einen Syntaxfehler
- 28. Android: Proguard NoSuchMethodError
- 29. Warum wirft BitmapSource.Create eine ArgumentException?
- 30. Warum preg_replace wirft mir einen "Unbekannten Modifikator" Fehler?
Wo ist? – Rawkode
Ich kenne die Lösung, ich habe gerade in der populären und lebendigen Frage-und-Antwort-Format :) –
Ich nehme an, Sie waren nur versuchen, ein paar upvotes zu bekommen, aber Sie können sich selbst zumindest @azertiti das Recht zurückgeben Antwort :) – Rigotti