onResume方法的两个活动和不同的案例

时间:2015-12-09 10:04:35

标签: android android-lifecycle onresume

我的问题是我在activities中有两个function A和B以及一个acitivity B

activity A中,如果我点击button,它会致电:this.finish(),然后我会在第二个activityActivityB,并且onResume()它将执行我的function B : onResume() { functionB}

在此案例之后,我想使用functionB。 所以我想知道是否有可能知道(使用onResume()时),来自"你来的地方" :所以如果我从另一个不是A的onResume()获得activity,它将永远不会使用function B,但如果我完成ActivityA

它将仅使用B.

希望你明白。

谢谢

3 个答案:

答案 0 :(得分:1)

这可以使用Map<String,RoleWrapper> roles =new HashMap<>(); 代替startActivityForResult来完成。像这样:

startActivity

然后你会打电话给:

而不是调用this.finish()
startActivityForResult(activityIntent, 100);

然后在你的恢复活动中,这个方法将在onResume之前被调用:

setResult(RESULT_OK);
this.finish();

在这里,您可以将某种@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK && requestCode == 100) { // do something } } 变量设置为true,让boolean知道它来自您的其他Activity,然后在onResume检查中查看{{1}如果它做了你想做的任何事情,则设置为true。

答案 1 :(得分:1)

您必须使用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.
}

答案 2 :(得分:0)

您应该使用IntentBundle来满足您的要求。

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

使用

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

使用value,您可以了解来自onResume还是来自某个地方的来电。

希望有所帮助