Wie gehe ich von MonkeyDevice?

Ich möchte die MonkeyDevice Klasse der Monkeyrunner API erweitern. Meine abgeleitete Klasse sieht so aus.

from com.android.monkeyrunner import MonkeyDevice, MonkeyRunner class TestDevice(MonkeyDevice): def __init__(self, serial=None): MonkeyDevice.__init__(self) self = MonkeyRunner.waitForConnection(deviceId=serial) self.serial = serial 

Wenn ich test_dev = TestDevice(serial) von einem anderen Modul nenne, test_dev = TestDevice(serial) ich folgende Fehlermeldung:

  • Android - listview Filter zählen
  • CollapsingToolbarLayout und verstecke Symbolleiste beim Scrollen
  • Android App Google Maps mit grauen Fliesen und nicht Karte!
  • Android-Webcam aktivieren im Emulator
  • Android: Canvas vs OpenGL
  • TabLayout entfernen unnötiges Scrollen
  •   test_dev = TestDevice(serial) TypeError: _new_impl(): 1st arg can't be coerced to com.android.monkeyrunner.core.IMonkeyDevice 

    Was mache ich falsch?

    Danke im Voraus!

  • Warum beginnen Variablennamen oft mit dem Buchstaben 'm'?
  • Android Horizontale LinearLayout - Wrap Elemente
  • Fordern Sie nicht Window.FEATURE_ACTION_BAR an und setzen Sie windowActionBar auf false in Ihrem Design, um stattdessen eine Symbolleiste zu verwenden
  • Wie mache ich ein benutzerdefiniertes Raster mit Bildern in Android?
  • Android FB API 3.0 - Berechtigungen nur einmal festlegen
  • So aktualisieren Sie App Widget mit Listenansicht aus einer Aktivität
  • 2 Solutions collect form web for “Wie gehe ich von MonkeyDevice?”

    Es scheint, dass Sie eine MonkeyDevice Instanz nicht direkt initialisieren MonkeyDevice ohne einen Aufruf einer Factory-Funktion waitForConnection . Also musst du dich self in deiner __new__() Funktion zuordnen, damit MonkeyDevice die Instanz als IMonkeyDevice von IMonkeyDevice bevor du es __init__

    Beispiel:

     class TestDevice(MonkeyDevice): def __new__(self, serial=None): return MonkeyRunner.waitForConnection(deviceId=serial) def __init__(self): MonkeyDevice.__init__(self) 

    Es scheint, dass Sie versuchen, eine MonkeyDevice Instanz zu erweitern, die von Factory Call waitForConnection .

    Wenn du versuchst, dich self in den construtor zu ersetzen, bekommst du einen Fehler (?). Ich vermute, du laufst Jython, da CPython hier nicht beschweren würde, stattdessen wird eine lokale Variable self geschaffen und ihr Wert verloren.

    Jedenfalls zu erreichen, was Sie wollen, sollten Sie eine Klasse mit benutzerdefinierten __new__ anstatt __init__ , erhalten Sie Ihre MonkeyDevice Instanz aus der Fabrik und injizieren Sie Ihre Sachen in die Instanz oder es ist Klasse / Basen / etc.

    Alternativ können Sie MonkeyDevice in eine andere Klasse MonkeyDevice und monkey-ish-Anrufe und Mitgliedszugang übergeben __getattr__ und __setattr__ .

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.