获取onActivityResult不在同一个类上发送startActivityForResult

时间:2015-09-24 22:10:00

标签: android fragment runnable start-activity

我尝试将语音识别为此链接中显示https://software.intel.com/en-us/articles/developing-android-applications-with-voice-recognition-features

它使用run()方法在背景上创建线程,我从片段中调用它,如SpeechRecognitionHelper.run(getActivity()); 然后在显示它使用

ownerActivity.startActivityForResult(intent,SystemData.VOICE_RECOGNITION_REQUEST_CODE); 

其中ownerActivity是getActivity()我在run()上传递它。 所以我想我可以在Fragment中实现onActivityResult(..)(它调用run()并动态获取结果。 但是在尝试时却给我一个错误。

  1. 如果我指定它甚至在anther类中使用它,我不能在Fragment中得到结果吗?
  2. 如果不是,如果我使用run()方法,如何获得结果?如果我还必须使用startActivityForResult
  3. ,如何获得结果

2 个答案:

答案 0 :(得分:0)

for(size_t i = 0; i < innerMapit->second.size(); ++i) { if(innerMapit->second[i] != keyIt->second[i]) //Do they match? { match = false; break; } } 是您从识别器活动中获取语音识别结果的唯一方法。

如果从onActivityResult()调用它,则必须覆盖同一个Activity子类上的Activity.startActivityForResult()才能获得结果。

如果从Activity.onActivityResult()调用它,则必须覆盖同一Fragment子类上的Fragment.startActivityForResult()以获得结果。

答案 1 :(得分:0)

Can't I get the result in the Fragment if I specify it even I use it in anther class?

从您分享的startRecognitionActivity方法链接预期Activity并使用Activity上下文启动Voice Recognition Activity,结果将传递给活动。修改方法以从Activity上下文启动Fragment

    private static void startRecognitionActivity(Fragment callerFragment) {
   // create an Intent with “RecognizerIntent.ACTION_RECOGNIZE_SPEECH” action

   // start Activity and wait for result on fragment
    callerFragment.startActivityForResult(intent, SystemData.VOICE_RECOGNITION_REQUEST_CODE);

}

现在覆盖onActivityResult

上的Fragment
// Fragment Results handler
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
// handle the result
if (requestCode == SystemData.VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK) {
     // Do your stuff here
  }
}