gpt4 book ai didi

java - 从 MainActivity 调用新 Activity 的方法

转载 作者:太空宇宙 更新时间:2023-11-04 14:04:57 26 4
gpt4 key购买 nike

有两个 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com