2013-10-29 18 views
7

Ho una classe Attività e non. Come chiamare un metodo nella classe di attività dalla classe non Activitycome chiamare il metodo nella classe di attività classe di attività non

public class MainActivity extends Activity { 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main2); 

     DataClass dc = new DataClass(); 
     dc.show();     
    } 

    public void call(ArrayList<String> arr) { 
     // Some code... 
    } 
} 

public class DataClass { 

    public void show(ArrayList<String> array) { 
     // Here I want to send this ArrayList values into the call 
     // method in activity class. 

     MainActivity act = new MainActivity(); 
     act.call(array);     
    } 
} 
+0

Vedi anche http://stackoverflow.com/questions/19666572/how-to-call-a-method-in-another-activity-from-activity e http: //stackoverflow.com/questions/16653867/android-call-method-from-an-other-activity – RenniePet

risposta

6

Beh ci sono diverse cose che si potrebbe fare. Credo che il modo più semplice per voi sarebbe quella di inviare il Context in DataClass in questo modo:

DataClass dc =new DataClass(); 
dc.show(this); 

E nel vostro DataClass salvare il contesto in una var globale Context context. Quindi utilizzarlo in questo modo:

((MainActivity)context).call(array); 
13

Basta creare un'interfaccia di callback all'interno di DateClass.

public DateClass { 
    public interface IDateCallback { 
     void call(ArrayList<String> arr); 
    } 

    private IDateCallback callerActivity; 

    public DateClass(Activity activity) { 
     callerActivity = (IDateCallback)activity; 
    } 
... 
} 

public void show(ArrayList<String> array) {    
    callerActivity.Call(array); 
    ... 
} 

//And implements it inside your activity. 

public class MainActivity extends Activity 
     implements IDateCallback { 

    public void call(ArrayList<String> arr) { 

    } 
} 
+0

Questo è il modo migliore per farlo, chiaramente ... – 2Dee

+0

grazie mille amico mi hai salvato la giornata :) –

+0

Sì Penso che questo dovrebbe essere il modo preferito per farlo. Ma una domanda su questo approccio, dal momento che stiamo passando un riferimento attività al DateClass, non si tradurrà in una perdita di memoria poiché l'attività non sarà in grado di garbage collection perché il DateClass contiene un riferimento ad esso? – akshayt23

1
((MainActivity)getContext).array(); 
0

Basta fare un singleton come:

TeacherDashboardSingleton:

public class TeacherDashboardSingleton { 
public Teacher_Dashboard aa; 
private static final TeacherDashboardSingleton ourInstance = new TeacherDashboardSingleton(); 
    public static TeacherDashboardSingleton getInstance() { 
     return ourInstance; 
    } 
} 

classe myActivity:

onCreate(....){ 
.... 
    TeacherDashboardSingleton.getInstance().aa = this; 
.... 
} 

questo creerà un oggetto di stessa istanza come in attività

ora si può usare da qualsiasi

Problemi correlati