2014-10-28 31 views
1

我对Android比较陌生,所以这一直让我难以置信。我目前有一项活动开启第二项活动;第二项活动允许您从一组字符串中进行选择,并在点击一个活动时关闭该活动。活动意图完成后运行代码

活动被称为是这样的:

final Intent intent = new Intent(context, theActivity.class); 
    context.startActivity(intent); 

我希望能够做的是运行代码时活动被关闭。特别是,我试图在活动结束时重新加载一些数据。流动的一个例子是

final Intent intent = new Intent(context, theActivity.class); 
    context.startActivity(intent); 
    DoStuffLikeReloadingData(foo bar); 

的问题,当然,是DoStuffLikeReloadingData开始活动后立即运行,无论它是否结束。

所以我在想什么:是否有某种事件可以挂钩,当活动关闭时会触发,所以我可以在那里做我想做的事情?如果没有,那么你们能否想到一种方法,在这种方式下,我可以监视活动并在关闭或完成时触发代码,如果以此方式调用代码?

任何帮助将是伟大的!谢谢。

回答

2

是的,你就可以开始使用该方法startActivityForResult(Intent, int requestCode);那么这将导致活动的onActivityResult(int requestCode, int resultCode, Intent data)方法要求一个结果的意图的活动被称为当被叫活动回报。

下面是一个例子:

public static final int REQUEST_CODE_SOMETHING = 1001; 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data){ 
    if(requestCode == REQUEST_CODE_SOMETHING){ 
     // It came from our call 
     if(resultCode == Activity.RESULT_OK){ 
      // The result was successful 
      DoStuffLikeReloadingData(); // you can use the data returned by the Intent do figure out what to do 
     } 
    } 
} 

private void startActivity(){ 
    final Intent intent = new Intent(context, theActivity.class); 
    startActivityForResult(intent, REQUEST_CODE_SOMETHING); 
} 

现在你可以打开活动和结果进行操作。如果您想要将数据传递给Activity或从Activity返回,可以通过intent.putExtra(String key, Parcellable object)向Intent添加附加内容来实现。

在第二个活动中,您应该在致电finish()传回数据之前调用方法setResult(int resultCode, Intent data)

+0

太棒了!我有一个问题:结果代码。我实际上并不知道他们会选择什么;这个结果代码是必要的还是我可以忽略的东西?我不完全理解int结果和请求代码的作用。 – 2014-10-28 21:25:31

+0

AH没关系!我想我现在明白了。 非常感谢! – 2014-10-28 21:27:21

+0

很高兴能帮到你!至于结果代码,这是你可以传回的东西。例如,如果他们点击了某个东西,你会使用setResult(Activity.RESULT_OK,yourIntentDataToPassBack),而如果他们点击取消(例如后退按钮),它会是setResult(Activity.RESULT_CANCELED),并且DoStuffLikeReloading方法不会被调用,因为结果代码不是明确的成功 – Guardanis 2014-10-29 14:34:07

0

使用startActivityForResult()开始您的活动。然后,在你活动的onActivityResult()方法,请致电DoStuffLikeReloadingData(foo bar);