我有一个活动A有这个功能:
public void onSettingsClick(View view){
Intent intent = new Intent(this, Settings.class);
startActivity(intent);
checkSettings();
}
有没有办法让活动A等待活动B(“Settings.class”)完成执行功能“checkSettings();” ?
由于
答案 0 :(得分:7)
编辑:我可能误解了你的问题。如果要在B中运行checkSettings()函数,则需要在B活动中定义并调用该函数。
否则,如果要在运行checkSettings()之前等待活动B结束,请复制以下代码。
在A:
public void onSettingsClick(View view){
Intent intent = new Intent(this, Settings.class);
startActivityForResult(intent, 1);
}
然后也在A Override
onActivityResult
方法中...当B结束时调用它:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
checkSettings();
}
答案 1 :(得分:4)
在你的活动A写
public void onSettingsClick(View view){
Intent intent = new Intent(this, Settings.class);
startActivityForResult(intent, 100);
}
以及您的活动A覆盖onActivityResult
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode==RESULT_OK){
if(requestCode==100){
checkSettings();
}
}
}
并在您的活动B中
当你想完成那个活动时,写下那段代码
Intent returnIntent = new Intent();
setResult(RESULT_CANCELED, returnIntent);
finish();
答案 2 :(得分:0)
由于要启动单独的活动,因此另一种方法是onResume中的呼叫检查设置。这样,由于您不必传递任何数据,并且如果出于其他原因,您可能想要刷新或重新检查设置,则只要活动回到顶部就可以这样做。
override fun onResume() {
super.onResume()
checkSettings()
}