Wie kann man eine Methode in MainActivity von einer anderen Klasse aufrufen?

8

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?

    
shannon 26.06.2013, 09:05
quelle

10 Antworten

12

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!

    
RicardoSousaDev 12.08.2014 09:18
quelle
10

Initialisiere es zuerst

%Vor%

Dann können Sie fortfahren

%Vor%     
Ruchira Gayan Ranaweera 26.06.2013 09:11
quelle
8

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.

    
Hardik Trivedi 12.08.2014 09:31
quelle
3
  

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%     
PermGenError 26.06.2013 09:07
quelle
2

Verwenden Sie diesen Code im Unterfragment von MainActivity , um die Methode darauf aufzurufen.

%Vor%     
Akash Arora 18.01.2017 11:23
quelle
1
%Vor%     
Ahamadullah Saikat 11.11.2017 19:14
quelle
0

Sie müssen Instanz von MainActivity in eine andere Klasse übergeben, dann können Sie von überall aus alles öffentliche (in MainActivity) aufrufen.

MainActivity.java

%Vor%

AnotherClass.java

%Vor%     
Tmthetom 08.11.2017 17:02
quelle
0

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%     
f.trajkovski 29.11.2017 08:08
quelle
-1

Sie können diese Methode einfach wie folgt statisch machen:

%Vor%

Sie können diese Funktion wie folgt in einer anderen Klasse aufrufen:

%Vor%     
Avadhani Y 26.06.2013 09:15
quelle
-2

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%     
Muhammad Aamir Ali 26.06.2013 09:10
quelle

Tags und Links