- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
基本上:Activity A 调用startActivityForResult,启动Activity B。此时,Activity B 应该回调Activity A 的onActivityResult 方法。相反, Activity B 随后会错误地 回调 Activity C 的 onActivityResult 方法。请注意,Activity B.getCallingActivity() 会按预期返回 Activity A。
更详细:
我有三个 Activity :
EditModuleActivity( Activity A)
EditMotorActivity( Activity B)
ConfigurationActivity( Activity C)
在 EditModuleActivity(Activity A)中,我有这段代码:
private void launchIntentFromHere(){
int requestCode = 101;
Intent editMotorIntent = new Intent(context, EditMotorActivity.class);
editMotorIntent.putExtra(EditMotorActivity.EDIT_MOTOR_CONTROLLER, item);
editMotorIntent.putExtra("requestCode", requestCode);
setResult(RESULT_OK, editMotorIntent);
startActivityForResult(editMotorIntent, requestCode);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
DbgLog.error("*************************** why is this never getting called?");
}
在 EditMotorActivity(Activity B)中,我有这段代码:
private void doThisThing(Object item){
// blah blah build intent
DbgLog.error("calling activity: " + getCallingActivity().toString()); // this prints out Activity A, which is what I expect.
returnIntent.putExtra(EDIT_MOTOR_CONTROLLER, item);
setResult(RESULT_OK, returnIntent);
finish();
}
ConfigurationActivity(Activity C)里面有这个:
private void launchIntent(Object item){
Intent editMotorIntent = new Intent(context, EditMotorActivity.class);
editMotorIntent.putExtra(EditMotorActivity.EDIT_MOTOR_CONTROLLER, item);
setResult(RESULT_OK, editMotorIntent);
startActivityForResult(editMotorIntent, 1);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// deals properly with the results
}
当我在 EditModuleActivity 中并启动 EditMotorActivity 时,ConfigurationActivity.onActivityResult 被调用。相反,当我在 EditModuleActivity 中并启动 EditMotorActivity 时,应该会调用 EditModuleActivity.onActivityResult 但那没有发生。
问题
为什么调用了错误的 onActivityResult?
如何调用正确的onActivityResult?我的期望不正确吗?这还有什么作用?
如果调用错误,如何调用正确的?
我看到的答案没有帮助
我的代码与此处接受的答案相同:onActivityResult() not being called in activity
我的 list 中没有 android:launchMode="singleInstance"
我不知道“fragment ”是什么,但我想我没有。
请注意,我不是从一个 Activity 调用两个不同的 Activity ,如这个问题:Handling onActivityResult in Android app having more than one activity相反,我从两个不同的 Activity 调用同一个 Activity。
此处的一条评论说“如果您从类 A 调用 Activity B,它将始终向类 A 返回代码。如果您从 C 调用 D,也是一样的。”但是我从 Activity B 调用 Activity B,它返回到 Activity C。为什么?? WRONG onActivityResult() being called
像这样:
B
/ \
A C
不是这个:
X Z
\ /
Y
最佳答案
我是这样覆盖 onStop 方法的:
@Override
public void onStop(){
setResult(RESULT_CANCELED, new Intent());
finish();
}
基本上,我不明白 Android 生命周期是如何工作的。我认为 onStop() 只会在 Activity 被 KILLED 时被调用,而且我认为如果它正在等待另一个 Activity 的响应则不会被杀死。
所以发生的事情是这样的:Activity C 启动 Activity A,Activity A 启动 Activity B。当 Activity B 启动时,A.onStop() 被调用。然后,当 Activity B 完成时,它(正确地)尝试返回到 Activity A,但是 Activity A 已经停止,所以它一路返回到 Activity C。
关于android - onActivityResult 在错误的 Activity 中被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26900650/
哪个更好,为什么? 这个: @Override public void onActivityResult(int requestCode, int resultCode, Intent intent)
在我的 fragment 中,我已经启动了用于照片捕获的 startActivityforresult Intent 。我已经覆盖了 fragment 类中的 onActivityResult 回调方
我已经实现了 Facebook 集成,并且在初始化部分工作正常,即使 Facebook APPID 也适用于应用程序。 让我更详细地解释一下:我已在 onCreate() 中添加并初始化 Facebo
我有代码可以让我从计算器中获取值并进一步使用它: //-----------------This section creates the keypad functionality for (int o
我陷入了一种情况,根据我的应用程序图表流程描述如下: 假设我在 Activity A 上,在单击按钮时,我从图库中选择图像,选择后,我将移动到 Activity B(它在内部来自 onActivity
我有一项 Activity 要求启用蓝牙和发现模式。 请求被正确执行并被 onactivityresult() 接收. 问题出在发现请求中。 如果我点击拒绝,那么 RESULT_CANCELED正确获
所以我尝试显示相机拍摄的图像,并希望稍后通过套接字发送它,但我注意到 onActivityResult() 方法没有被调用,现在导致了进一步的问题。我使用 RESULT_OK,但检查其值,使其不是负值
我的 MainActivity.java 中有一个类用作接口(interface): public class prova{ prova(){ } @JavascriptIn
我尝试通过启动 Intent 来使用 startActivityForResult 从照片库中进行选择并覆盖 onActivityResult 来获取图像。我不知道为什么,但是当我选择图像并尝试将其绘
每当我完成“ViewEvent” Activity 时,在“HomeFragment”中调用 onActivityResult() 时遇到问题。ViewEvents Activity 从适配器启动。
我有一个选择图像的 Intent (我在 fragment 中调用它): Intent intent = new Intent(Intent.ACTION_GET_CONTENT); int
我有一个 RecyclerView,其中的项目包含一个使用 startActivityForResult 启动 Activity 的按钮。 onClick 方法是在适配器内部实现的,并且在从新 Act
我有以下代码,它应该使用服务记录设备屏幕。 问题是,要使用它,我需要使用如下调用:startActivityForResult/onActivityResult,以获得能够录制屏幕的权限。 但是在 A
我有三项 Activity ,A、B 和 C(代码如下)。 A 使用 startActivityforResult 调用 B,并覆盖 onActivityResult,B 也使用 Activityfo
我有一个 Activity 1,它向 Activity 2 发送 Intent ,如下所示: Activity 1 periodDatetv.setOnClickListener(new OnClic
我正在尝试将其与我的应用程序集成:Capture Image from Camera and Display in Activity 当我打开 Activity 时,我完全使用了作者所写的内容,但出现
我有一个 MainActivity,它有两个 TextView。用户可以选择启动另一个 Activity 并从 ListView 中选择数据来填充这些 TextView。我的主要 Activity 有
这个问题在这里已经有了答案: How to manage startActivityForResult on Android (14 个回答) 3年前关闭。 请写下答案 如何在按钮单击时调用 frag
我怎么知道这个主题有很好的记录,我已经阅读了很多关于那个问题的文章,但我仍然遇到以下问题:当我用我的应用拍照并点击“验证”按钮时,没有任何反应。我正在做的事情的目的是:传递给 onActivityRe
从第一个 Activity 我想去第二个,然后从第二个到第三个。在第三个activity中,我想在EditText中输入姓名,然后按下按钮后,转到第一个activity,同时发送在第三项 Ac
我是一名优秀的程序员,十分优秀!