onResume 方法的两个活动和不同情况

Two activities and different case for onResume method

我的问题是我有两个 activities A 和 B,还有 1 个 functionacitivity B

activity A 中,如果我点击 button 它将调用:this.finish(),那么我将在第二个 activityActivityB使用 onResume() 它将执行我的 function B : onResume() { functionB}

我想在这个案例后使用 functionB 的东西。 所以我想知道是否有可能从 "where you come" 知道(使用 onResume() 时):所以如果我从另一个不是 A 的 activity 得到 onResume(),它永远不会使用function B,但如果我完成 ActivityA

,它只会使用 B

希望你明白。

谢谢

这可以用 startActivityForResult 而不是 startActivity 来完成。像这样:

startActivityForResult(activityIntent, 100);

那么你可以调用:

而不是调用 this.finish()
setResult(RESULT_OK);
this.finish();

然后在您的恢复中 Activity 此方法将在 onResume 之前被调用:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK && requestCode == 100) {
        // do something 
    }
}

在这里您可以将某种 boolean 变量设置为 true 让 Activity 知道它来自您的另一个 Activity 然后在 onResume 中检查是否 boolean 设置为 true,如果它是随心所欲。

您应该使用 Intent and Bundle 来达到您的要求。

Intent intent = new Intent(this, YourActivity.class);
Bundle extras = new Bundle();
extras.putBoolean(key,value); 
intent.putExtras(extras);
startActivity(intent); // This passes the information to your activity

使用

接收您 activity 中的信息
boolean value = getIntent().getExtras().putBoolean(key);

使用 value 你可以知道它是从 onResume 还是从某个地方调用的。

希望对您有所帮助

您必须使用 SharedPreferences 才能像在您的场景中那样工作。

在您的 ActivityA 中。在你调用 finish() 之前对你的 buttonClick 做这样的事情;

SharedPreferences sp = ActivityA.this.getSharedPreferences("prefs", MODE_PRIVATE);
 SharedPreferences.Editor preferencesEditor = sp.edit();
sp.putBoolean("from" , true);
sp.commit();

然后在 ActivityB 的 onResume 中这样做。

SharedPreferences sp = ActivityB.this.getSharedPreferences("prefs", MODE_PRIVATE);
if(sp.getBoolean("from",false))
{ 
// write your code here . it is from activirt A.
}