2017-07-12 8 views
0

Ich habe eine Aktivität "USBCommunicationManager" und eine Klasse "Helper". An einem gewissen Punkt "Helper" startet die Aktivität (a ist der MainActivity bestanden "Helper"):Android: Rufen Sie öffentliche Methoden einer Aktivität

Intent intent = new Intent(a, USBCommunicationManager.class); 
a.startActivity(intent); 

Now "Helper" braucht eine öffentliche Methode der gestarteten "USBCommunicationManager" zu nennen.

Ist das eine schlechte Übung und wie ist das möglich?

+1

Kurz gesagt müssen Sie Aktivität + Schnittstelle oder Aktivität + broadcastReceiver verwenden, um Methoden innerhalb der Aktivität aufzurufen. –

+0

danke für die Antwort. Ich bin Android-Anfänger und weiß leider nicht, was das bedeutet. – murkr

Antwort

1

Erstellen werde ich versuchen, Ihnen ein einfaches Beispiel geben, wie man in der Aktivität „eine öffentliche Methode aufrufen“.

Zuerst müssen Sie in manifest auf Ihre Aktivität

<activity .. 
     android:launchMode= "singleInstance" /> 

dann innerhalb Helper.class initialisieren einige benutzerdefinierte Aktionen

public static final String SOME_ACTION1 = "some_action1" 
public static final String SOME_ACTION2 = "some_action2" 

private void someAction(){ 
    Intent intent = new Intent(a, USBCommunicationManager.class); 
    intent.setAction(SOME_ACTION1) 
    a.startActivity(intent);//this calls onNewIntent method in launched activity 
} 

In USBCommunicationManager Überschreibung onNewIntent

@Override 
protected void onNewIntent(Intent intent) { 
    super.onNewIntent(intent); 
    String action = intent.getAction() 

    //now you can check this action and use desired method 
} 

hinzufügen Aber ich recomended zu lesen etwa BroadcastReceiver, weil Sie mit dieser Lösung versehentlich Aktivität starten können. Aber mit Broadcast einfach abmelden Sie es auf Aktivität zerstören und sorgen Sie sich nicht um Neustart der Aktivität.

+0

danke für die Antwort – murkr

-1

Anruf eine andere Klasse Methode Objekt dieser Klasse

USBCommunicationManager ucm= new USBCommunicationManager(); 
 
ucm.methodName();

+0

Dies betrifft keine Aktivitätsklassen –

Verwandte Themen