进行活动A等待活动B完成继续

时间:2015-01-28 18:27:16

标签: android android-intent android-activity

我有一个活动A有这个功能:

public void onSettingsClick(View view){
        Intent intent = new Intent(this, Settings.class);
        startActivity(intent);

        checkSettings();
}

有没有办法让活动A等待活动B(“Settings.class”)完成执行功能“checkSettings();” ?

由于

3 个答案:

答案 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()
    }