有两项活动..
1.从MainActivity打开SecondActivity
2.当事件进入MainActivity时,调用SecondActivity的testMethod
但怎么办这个testMethod呢?
public class MainActivity extends Activity implements someListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Launch SecondActivity here!!
Intent intent = new Intent();
intent.setClass(MainActivity.this, SecondActivity.class);
startActivityForResult(intent, ID_PlayerActivity);
}
//trigger by JNI, it's in the other thread, not main thread.
void onEventCome() {
//How to call testMethod() in SecondActivity?
}
}
public class SecondActivity extends Activity {
void testMethod() {
//execute something...
}
}
答案 0 :(得分:0)
首先,您需要一个能够捕获此类事件的事件感知侦听器。你的班级似乎没有能力这样做。
既然你有一个有效的问题,请点击这里:
void onEventCome() {
SecondActivity secondActivity = new SecondActivity();
secondActivity.testMethod();
}
答案 1 :(得分:0)
有很多方法。 例如: 将方法创建为static并使用类名称并调用它。
public static void onEventCome() {
}
在MainActivity中:
MainActivity.onEventCome();
这是一种方法。另一种方法是为MainActivity创建一个对象。
public void onEventCome() {
}
MainActivity main;
main = new MainActivity();
main.onEventCome();
答案 2 :(得分:0)
如果您打开SecondActivity,您的MainActivity将变为非活动状态。我不认为从其他非活动/已停止活动中调用某些活动方法是个好主意。
我建议使用observer pattern。创建一个像EventProducer这样的全局长期存在的对象,并将所有活动注册为观察者。因此,您的EventProducer可以通知所有活动有关新事件。
示例:
public class SecondActivity extends Activity implements MyEventListener {
@Override
public void onResume(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EventProducer.instance().register(this);
}
@Override
public void onPause(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EventProducer.instance().unregister(this);
}
void testMethod(){
//just doit
}
@Override
void onMyEventCome() {
testMethod();
}
}
答案 3 :(得分:0)
您没有第二项活动的内容视图。如果您不需要查看操作,可以删除
Intent intent = new Intent();
intent.setClass(MainActivity.this, SecondActivity.class);
startActivityForResult(intent, ID_PlayerActivity);
删除extends Activity
中的SecondActivity
并添加构造函数public SecondActivity(Context context)
并调用第一个活动中的测试方法,例如@Dragan示例:
void onEventCome() {
SecondActivity secondActivity = new SecondActivity(MainActivity.this);
secondActivity.testMethod();
}