2015-12-09 50 views
1

我的问题是我有两个activities A和B和functionacitivity B两种活动和不同的情况下为onResume方法

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

我想用functionB后的事这个案例。 所以我不知道是否有可能知道(当使用onResume()时),从“你来自哪里”:所以如果我从另一个activity得到onResume()这不是A,它永远不会使用function B,但它将只使用B,如果我完成ActivityA

希望你明白。

谢谢

+0

只是添加一个布尔到您的意图,这是真的来自A和否则它是假的。如果你从B调用A,那么你应该使用onActivityResult方法。 – Rich

+0

事情是,我不使用从A到B的意图,它们都是初始化的,然后当我用A完成我的任务时,我称之为。完成后,我会回到B与onResume。也许我不明白你 – Foushi

回答

1

这可以用startActivityForResult代替startActivity来完成。像这样:

startActivityForResult(activityIntent, 100); 

然后,而不是调用this.finish(),你会打电话:

setResult(RESULT_OK); 
this.finish(); 

然后在你重新开始活动这个方法会前的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变量为真,让Activity知道它来自你的其他Activity然后在onResume检查,看看是否boolean设置为true,如果它做任何你想做的事。

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或从某个地方打电话。

希望有帮助

+0

这将是一个可接受的答案,用于将数据从一个“活动”传递到另一个。但问题是如何通过完成第二个Activity来让一个Activity知道它是否从另一个回来。 – vguzzi

1

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

在您的ActivityA。在你打电话给finish()之前,按下你的按钮做这样的事情。

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. 
} 
相关问题