9

Activity クラスと非 Activity クラスがあります。非ActivityクラスからActivityクラスのメソッドを呼び出す方法

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);                  
    }
}
4

4 に答える 4

14

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) {

    }  
}
于 2013-10-29T15:50:02.297 に答える
7

さて、あなたができることがいくつかあります。Context次のように送信するのが最も簡単だと思いますDataClass

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

そしてDataClass、コンテキストをグローバル var に保存しますContext context。次に、次のように使用します。

((MainActivity)context).call(array);
于 2013-10-29T15:49:51.313 に答える
2
((MainActivity)getContext).array();
于 2016-10-08T09:00:22.030 に答える