我对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在启动活动后立即运行,无论它是否已完成。
所以我想知道:当活动结束时,是否会有某种事件可以触发,所以我可以在那里做我想做的事情?如果没有,你们可以想出一种方法,我可以监视活动并在关闭或完成时触发代码,如果以这种方式调用它的话吗?
任何帮助都会很棒!谢谢。
答案 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);