gpt4 book ai didi

android - Activity Intent 完成后运行代码

转载 作者:行者123 更新时间:2023-11-29 20:59:23 25 4
gpt4 key购买 nike

我是 Android 的新手,所以这一直困扰着我。我目前有一个 Activity 可以打开第二个 Activity ;第二个 Activity 允许您从一组字符串中进行选择,单击其中一个后,Activity 将关闭。

Activity 是这样调用的:

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

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

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

当然,问题在于 DoStuffLikeReloadingData 在启动 Activity 后立即运行,而不管它是否完成。

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

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

最佳答案

是的,您可以使用 startActivityForResult(Intent, int requestCode); 方法启动一个 Activity 以请求结果,这将导致 Activity 的 onActivityResult(int requestCode, int resultCode, Intent data) 被调用的 Activity 返回时调用的方法。

这是一个例子:

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 或从 Activity 传回数据,您可以通过 intent.putExtra(String key, Parcellable object) 向 Intent 添加额外内容来实现。

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

关于android - Activity Intent 完成后运行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26618543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com