Aktivität zu Aktivität callback-listener
Nehmen wir an 2 Aktivitäten Activity1
und Activity2
. Ich muss rufen Sie die Methode methodAct1()
(innen Activity1
) von methodAct2
(innen Activity2
). Ich denke, es sollte funktionieren mit callback-listener - ich will nicht EventBus
libs!
Bekomme ich java.lang.NullPointerException
mit diesem code:
Schnittstelle:
public interface MyListener {
public void listen();
}
Aktivität wo das Ereignis erstellt:
public class Activity2 extends Activity {
private MyListener myListener;
public void setUpListener(MyListener myListener) {
this.myListener = myListener;
}
private void doWork(){
//do stuff
myListener.listen();
}
}
Tätigkeit, wo ich mag würde, um das Ereignis aus, wenn die Arbeit getan ist:
public class Activity1 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Activity2 activity2 = new Activity2();
activity2.setUpListener(new setUpListener() {
@Override
public void listen() {
//get the event here
}
});
}
}
- aber zu einem Zeitpunkt nur eine Aktivität initialisiert wird, senden Sie einige Daten in eine Absicht, und starten Sie eine andere Tätigkeit, und diese Daten Lesen oder wahrscheinlich mit startActivityForResult
- Sie sage nur die Schnittstelle, aber keine Ihrer Aktivitäten umzusetzen
- Warum sind Sie Instanziierung der Aktivität mit dem Konstruktor? Dies ist nicht der Weg, das zu tun. Starten Sie eine neue Aktivität erstellen Sie eine
Intent
- und call -startActivity()
. - Mittal brauche ich nicht zum initialisieren der ersten ein, wenn die Arbeit getan ist, in die zweite ein, aber nur einige-code
- ersten stärken Ihre Grundlagen, dann werden Sie verstehen 🙂
- Sie sind nicht zwei Tätigkeiten zur gleichen Zeit ausgeführt.
InformationsquelleAutor Vasile Doe | 2015-11-23
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist absolut nicht möglich. Sie nie instanziert werden eine neue Tätigkeit selbst. Sie wird nicht zwei Tätigkeiten zur gleichen Zeit ausgeführt.
Wenn Sie möchten, dass eine andere Aktivität, etwas zu tun, basierend auf, was Ihre bisherigen Aktivitäten will, dann müssen Sie hinzufügen, dass zu Ihrer Absicht.
Wenn Sie möchten, dass bestimmte Funktionen durch einen Rückruf, dann werden Sie vielleicht denken Fragmente. Auf diese Weise können Sie die gleiche Tätigkeit ausführen und es sagen kann, einzelne Fragmente von dem, was Sie tun müssen.
new
Schlüsselwort. Dies ist die zentrale Frage, mit der Frage gegeben. Für die Tätigkeit instrumentation, würden Sie in der Regel so etwas wieActivityInstrumentationTestCase2
.Die NPE passiert ist, wegen deiner Aussage:
sollten Sie dies nie tun, und Sie stattdessen tun sollten, in der Aktivität 1:
den startActivityForResult() bietet einen Rückruf von Aktivität 2 Aktivität 1 und Sie überschreiben müssen, das Ergebnis in der Aktivität 1:
Könnten Sie tun, dass in Ihrem Ansatz....
Obwohl es nicht die beste Herangehensweise und in Bezug auf die Arbeit mit diesem Mechanismus Ihre activity1 erstellt werden muss.
Kann man das so machen das >
- SCHRITT 01: Implementieren Sie eine gemeinsame Schnittstelle
- SCHRITT 03 :: Play mit dem code in der Ersten Aktivität
können Sie auch Umsetzung einer backword callback (vom Ersten zum Zweiten), um einige Ergebnisse aus SecondAvtivity oder rufen Sie einige Methoden