java - 第二个活动中的输出不起作用
问题描述
我在 Android Studio 上进行语音识别。
MainActivity.java:
public class MainActivity extends AppCompatActivity {
private TextView voiceInput;
private TextView speakButton;
private final int REQ_CODE_SPEECH_INPUT = 100;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
voiceInput = (TextView) findViewById(R.id.voiceInput);
speakButton = (TextView) findViewById(R.id.btnSpeak);
speakButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
askSpeechInput();
}
});
}
// Showing google speech input dialog
private void askSpeechInput() {
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,
"Hi speak something");
try {
startActivityForResult(intent, REQ_CODE_SPEECH_INPUT);
} catch (ActivityNotFoundException a) {
}
}
// Receiving speech input
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case REQ_CODE_SPEECH_INPUT: {
if (resultCode == RESULT_OK && null != data) {
ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
voiceInput.setText(result.get(0));
}
break;
}
}
}
}
在那里你可以看到最后一部分是负责的输出:
// Receiving speech input
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case REQ_CODE_SPEECH_INPUT: {
if (resultCode == RESULT_OK && null != data) {
ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
voiceInput.setText(result.get(0));
}
break;
}
}
}
我的问题
现在我创建了第二个活动并想在那里接收输出,所以我复制了上面的这些代码块并粘贴了它。它没有用。
如何让我的口语输入的输出出现在第二个活动中?
如果您需要更多信息,请让我知道并对这个愚蠢的问题感到抱歉,我认为解决方案很简单,但我无法罚款!
解决方案
尝试将结果数据发送到第二个活动中,如下面的代码..
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case REQ_CODE_SPEECH_INPUT: {
if (resultCode == RESULT_OK && null != data) {
ArrayList<String> result = data
.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
voiceInput.setText(result.get(0));
Intent intent=new Intent(this,SecondActivity.class);
intent.putStringArrayListExtra("result",result);
startActivity(intent);
}
break;
}
}
}
和 onCreate 方法中的第二个活动在下面调用以获取结果..
result_list = getIntent().getStringArrayListExtra("result");
然后 result_list 数据显示到 textview 和其他视图中。
确保两个活动都定义到android清单文件中。
推荐阅读
- vim - 将 Vim 的语言特定设置放在哪里?
- c# - ReSharper 以错误的方式检测到“表达式始终为真”
- c# - EF 核心 ThenInclude Select 说“在 Include 中使用的 Lambda 表达式无效”
- javascript - 如果您不知道密钥,如何检查 JSON 密钥的值是否为数组
- excel - 根据字符限制将文本截断为完整的单词 - Excel
- javascript - 如何计算 JavaScript 中对象数组中值的总和?
- powershell - 如何在 PowerShell(温度)中从此 WMIObject 返回单个整数
- asp.net-core - 如何加入具有相同 ID 的列
- java - 在 Spring Boot 中扩展 Mongo 默认配置
- sql - 将数字转换为 HH24:Mi:SS 其中 Mi:SS 是连接字符串