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

Thu*_*rme 6 android android-intent android-activity

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

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

        checkSettings();
}
Run Code Online (Sandbox Code Playgroud)

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

谢谢

kem*_*ica 7

编辑:我可能误解了你的问题.如果要在B中运行checkSettings()函数,则需要在B活动中定义并调用该函数.

否则,如果要在运行checkSettings()之前等待活动B结束,请复制以下代码.

在一个:

public void onSettingsClick(View view){
        Intent intent = new Intent(this, Settings.class);
        startActivityForResult(intent, 1);
}
Run Code Online (Sandbox Code Playgroud)

然后也在A Override onActivityResult方法..当B结束时调用它:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        checkSettings();
    }
Run Code Online (Sandbox Code Playgroud)


Mou*_*han 5

在您的活动中写

public void onSettingsClick(View view){
    Intent intent = new Intent(this, Settings.class);
    startActivityForResult(intent, 100);
}
Run Code Online (Sandbox Code Playgroud)

并且在您的活动中重写onActivityResult

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

   if(resultCode==RESULT_OK){

      if(requestCode==100){

        checkSettings();

       }
   }

}
Run Code Online (Sandbox Code Playgroud)

在你的活动B中

当您想完成该活动时,在那写下代码

Intent returnIntent = new Intent();
setResult(RESULT_CANCELED, returnIntent);
finish();
Run Code Online (Sandbox Code Playgroud)