完成活动意图后运行代码

时间:2014-10-28 21:09:52

标签: android android-intent android-activity

我对Android比较陌生,所以这让我很难过。我目前有一项活动开启第二项活动;第二个活动允许您从字符串集合中进行选择,并在单击一个字符串时关闭活动。

活动的调用方式如下:

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

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

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

问题当然是DoStuffLikeReloadingData在启动活动后立即运行,无论它是否已完成。

所以我想知道:当活动结束时,是否会有某种事件可以触发,所以我可以在那里做我想做的事情?如果没有,你们可以想出一种方法,我可以监视活动并在关闭或完成时触发代码,如果以这种方式调用它的话吗?

任何帮助都会很棒!谢谢。

2 个答案:

答案 0 :(得分:2)

是的,您可以使用startActivityForResult(Intent, int requestCode);方法启动一个Activity,以便在调用Activity返回时调用Activity的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并对结果执行操作。如果您想将数据传递给活动或从活动返回,您可以通过intent.putExtra(String key, Parcellable object)向Intent添加额外内容。

在第二个Activity中,您应该在调用setResult(int resultCode, Intent data)之前调用方法finish()以传回数据。

答案 1 :(得分:0)

使用startActivityForResult()开始您的活动。然后,在您的活动的onActivityResult()方法中,拨打您的DoStuffLikeReloadingData(foo bar);