onResume 方法的两个活动和不同情况
Two activities and different case for onResume method
我的问题是我有两个 activities
A 和 B,还有 1 个 function
在 acitivity B
。
在 activity A
中,如果我点击 button
它将调用:this.finish()
,那么我将在第二个 activity
即 ActivityB
使用 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.
}
我的问题是我有两个 activities
A 和 B,还有 1 个 function
在 acitivity B
。
在 activity A
中,如果我点击 button
它将调用:this.finish()
,那么我将在第二个 activity
即 ActivityB
使用 onResume()
它将执行我的 function B : onResume() { functionB}
我想在这个案例后使用 functionB
的东西。
所以我想知道是否有可能从 "where you come" 知道(使用 onResume()
时):所以如果我从另一个不是 A 的 activity
得到 onResume()
,它永远不会使用function B
,但如果我完成 ActivityA
希望你明白。
谢谢
这可以用 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.
}