use*_*841 8 android android-activity
我有一个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...
}
}
Run Code Online (Sandbox Code Playgroud)
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);
}
}
Run Code Online (Sandbox Code Playgroud)
kam*_*eny 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) {
}
}
Run Code Online (Sandbox Code Playgroud)
那么你可以做几件事.我认为最简单的你会发送Context到DataClass像这样:
DataClass dc =new DataClass();
dc.show(this);
Run Code Online (Sandbox Code Playgroud)
而在你DataClass保存上下文为全局变量Context context.然后像这样使用它:
((MainActivity)context).call(array);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23008 次 |
| 最近记录: |