2016-04-25 20 views
0

Klasse A:Java-Aufruf einer Funktion in einer Klasse von einer anderen

public class A extends Activity{ 
    B b; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     b.sample(); 
    } 

    public void test(){ 
     //Do Something 
    } 
} 

Klasse B:

public class B{ 

    public void sample(){ 
     //Do Something 
    } 
} 

Seine Ok Methoden der Klasse B in der Klasse A zu nennen, Aber Wie Ist es möglich, Klasse A Methoden und Funktionen in Klasse B aufzurufen?

I cant Ein neues Objekt der Klasse A in der Klasse B erstellen wie:

A a = new A(); 

weil es schafft dann eine ganz neue Aktivität (Bin ich richtig ?!)

Soll ich Schnittstelle verwenden zu erreichen Dies?

+5

Nein, Sie sollten das 'A' Objekt in den' B' Konstruktor übergeben. Schnittstellen werden nichts lösen. –

Antwort

1

definieren den B-Konstruktor und machen es das Ja

public class B{ 
    private Activity theActivityA; 
    B(Activity activitiy){ 
    this.theActivityA = activitiy; 
    if(this.theActivityA!=null){ 
     this.theActivityA.test(); 
    } 
} 
1

Aktivität erhalten Sie Schnittstellen verwenden können. Ich nehme an, dass Sie die Aktivität über etwas benachrichtigen müssen.

public class A extends Activity implements B.IListener { 
.... 

public class B{ 
    IListener mListener; 
    B(IListener listener){ 
     mListener=listener; 
    } 
    public void sample(){ 
     //Do Something 
    } 
    public interface IListener { 
     something(); 
    } 
} 

in B So können Sie Methoden, um jede Instanz von IListener nennen, nicht nur A.

Hoffe, es hilft.

Verwandte Themen