我目前正在使用一个表格主机和5个片段运行一个活动:

Android LVL19 AndroidStudio2.2测试设备三星Galaxy 3和Android4.4
在这些片段中,我有一些编辑文本元素。我使用每个编辑文本的按钮来启动机器人语音到文本提示。
private void promptSTT() {
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
intent.putExtra(RecognizerIntent.EXTRA_PROMPT,
getString(R.string.speech_prompt));
startActivityForResult(intent, REQUEST_CODE_STT);
}在哪里private static final int REQUEST_CODE_STT = 250。问题是,这个结果是由活动接收的。因此,我在MyActivity.onActivityResult(...)中添加了一个if(reqeustCode == REQUEST_CODE_STT)检查并启动了ActiveFragment.onActivityResult(...),我的问题是,android语音到文本总是返回一些随机的requestCodes,比如2555677或1233789等等。所以我无法检测结果是否真的来自我的片段调用。有人能告诉我为什么会出现这些随机码而不是我在电话里输入的代码吗?
onActivityResult只需检查以下内容:
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK && requestCode == REQUEST_CODE_STT && data != null) {
Fragment fragment = getSupportFragmentManager().getFragments()
.get(tabHost.getCurrentTab());
fragment.onActivityResult(requestCode, resultCode, data);
}
}发布于 2016-09-26 12:57:47
正如布兰德所建议的那样,我研究了"onActivityResult请求代码错误片段“的主题。
在那里,我找到了很多解释,总是说同样的话。
如果您使用来自Fragment的Fragment(),则Activitiy onActivityResult()将获取片段的请求代码,而不是从Fragment启动的在startActivityForResult()中插入的代码。
因此,只需调用getActivity().startActivityForResult(intent, requestcode)。
在读了这篇文章之后,我试过了,而且效果很好。android开发者指南中没有提到这一点,实在令人难过。
https://stackoverflow.com/questions/39614096
复制相似问题