Java 在调用startActivityForResult的类中未调用onActivityResult

Java 在调用startActivityForResult的类中未调用onActivityResult,java,android,Java,Android,我有一个MainActivity,一个NonActivity类和SearchActivity。非活动类调用startActivityForResult,但从未调用非活动类中的onActivityResult 但当我为测试目的实现它时,我发现它在MainActivity中被调用。您能告诉我,如果可能的话,onActivityResult将从nonActivity类调用吗 这是我在非活动类中调用的代码 Intent intent = new Intent(activity, SearchActivi

我有一个MainActivity,一个NonActivity类和SearchActivity。非活动类调用startActivityForResult,但从未调用非活动类中的onActivityResult

但当我为测试目的实现它时,我发现它在MainActivity中被调用。您能告诉我,如果可能的话,onActivityResult将从nonActivity类调用吗

这是我在非活动类中调用的代码

Intent intent = new Intent(activity, SearchActivity.class);
        //start SearchActivity through intent and expect for result. The result is based on result code, which is REQUEST_DISCOVERY 
        activity.startActivityForResult(intent, REQUEST_DISCOVERY);
    }

感谢您的回答,如果您需要更多代码,我可以添加。

onActivityResult()
不会在
非活动类上调用,因为实际上它不是启动新
活动的那一个,您的调用
startActivityForResult()
MainActivity
对象上,调用
onActivityResult()
的位置是
MainActivity
。要将其回调到
非活动
,只需在
非活动
中创建一个方法,并从
main活动的
onActivityResult()
调用它,传递所需的参数

好的,我想这是避免这种情况的一个选择,因为我想要一个完全独立的类来处理所有的工作。谢谢@anze87,不客气。顺便说一句,您可以尝试通过提供一个接口将MainActivity与NonActivity解耦,NonActivity将实现该接口。这样,您的MainActivity将知道非活动是一个简单的“侦听器”,并从onActivityResult()向其发送回调。对我来说似乎是个更好的解决办法。你能给我举个小例子吗?我不确定我是否完全理解,我对这件事还不熟悉。再发一个问题,我会帮你的。您不能使用上一篇文章中有人回答的传入活动。对于这个问题,伊戈尔的答案是绝对正确的。