有两个 Activity ..
1.从MainActivity中打开SecondActivity
2.当事件进入MainActivity时,调用SecondActivity的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...
}
}
最佳答案
如果您打开 SecondActivity,您的 MainActivity 将变为非 Activity 状态。我认为从其他不活动/停止的 Activity 中调用某些 Activity 方法不是一个好主意。
我建议使用observer pattern 。创建一个像 EventProducer 这样的全局长期对象,并将所有 Activity 注册为观察者。因此您的 EventProducer 可以通知所有 Activity 有关新事件的信息。
示例:
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();
}
}
关于java - 从 MainActivity 调用新 Activity 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28959223/