2013-10-29 7 views
7

私はアクティビティクラスとアクティビティクラス以外があります。アクティビティフォームのメソッドを非アクティビティクラスで呼び出す方法

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

参照からそれを使用することができ、またhttp://stackoverflow.com/questions/19666572/how-to-call-a-method-in-another-activity-from-activityて、http: //stackoverflow.com/questions/16653867/android-call-method-from-an-other-activity – RenniePet

答えて

6

非ActivityクラスからActivityクラスでメソッドを呼び出すためにどれだけあなたができるいくつかのものがあります。

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

そして、あなたのDataClassグローバルVAR Context contextにコンテキストを保存中に:私はあなたのための最も簡単そうのようDataClassContextを送信することだと思います。そのように使用してください:

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

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

これは、これを行うための最善の方法です... – 2Dee

+0

ありがとう、私の日を救ったたくさんの男:) –

+0

はい私は、これを行うのが好ましい方法だと思います。 このアプローチに関する質問は、DateClassにアクティビティ参照を渡しているので、アクティビティがガベージコレクションに使用できないため、メモリリークが発生しません。 – akshayt23

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

同じようにシングルトンを行います。これは活動のと同じインスタンスのオブジェクトを作成します

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

TeacherDashboardSingleton:

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

myActivityクラス

今、あなたはどこにでも

関連する問題