Wie rufe ich die Methode startChronometer in einer anderen Klasse auf, wenn die Methode innerhalb der Hauptaktivität deklariert wird?
Innerhalb von MainActivity:
%Vor%In einer anderen Klasse habe ich versucht, dies zu tun:
%Vor%Aber ein Fehler ist aufgetreten, der sagt
java.lang.NullPointerException.
Darf ich wissen, was ich dem Code noch hinzufügen muss?
Sie können eine Methode einfach aus einem beliebigen Fragment in Ihrer Aktivität aufrufen, indem Sie einfach einen Cast wie folgt ausführen:
%Vor%Hoffe, das hilft!
Initialisiere es zuerst
%Vor%Dann können Sie fortfahren
%Vor%Ich würde vorschlagen, man sollte keinen Gegenstand einer Aktivitätstyp-Klasse machen.
%Vor%Alle Aktivitäten in Android müssen den Aktivitätslebenszyklus durchlaufen, damit ihnen ein gültiger Kontext zugeordnet wird.
Wenn Sie eine Aktivität als normale Java-Klasse behandeln, haben Sie einen Nullkontext. Da die meisten Methoden in einer Aktivität in ihrem Kontext aufgerufen werden, erhalten Sie eine Nullzeiger-Ausnahme, weshalb Ihre App abstürzt.
Verschieben Sie stattdessen alle solche Methoden, die von anderen Klassen aufgerufen werden müssen, in eine Utility-Klasse, die einen gültigen Kontext in ihrem Konstruktor akzeptiert und diesen Kontext dann in den Methoden verwendet, um die Arbeit zu erledigen.
Aber es ist ein Fehler aufgetreten, der java.lang.NullPointerException sagt.
Das liegt daran, dass Sie Ihre MainActivity nie initialisiert haben. Sie sollten Ihr Objekt initialisieren, bevor Sie seine Methoden aufrufen.
%Vor% Verwenden Sie diesen Code im Unterfragment von MainActivity
, um die Methode darauf aufzurufen.
Was ich getan habe und es funktioniert, ist eine Instanz in der MainActivity und Getter für diese Instanz zu erstellen:
%Vor%Und die in der onCreate-Methode zeigen nur auf diese Aktivität:
%Vor%Und in onDestroy sollten Sie diese Instanz auf null setzen:
%Vor%Später können Sie jede Methode in der von Ihnen gewünschten Klasse aufrufen:
%Vor%Sie können diese Methode einfach wie folgt statisch machen:
%Vor%Sie können diese Funktion wie folgt in einer anderen Klasse aufrufen:
%Vor%Sie können diese Methode statisch machen.
%Vor%Sie können diese Funktion wie folgt in einer anderen Klasse aufrufen:
%Vor%ODER
Sie können ein Objekt der Hauptklasse in der zweiten Klasse wie
erstellen %Vor%