我在非 Activity 类中启动语音识别 Activity (通过传入 Activity ),代码如下:
private static void startVoiceRecognitionActivity() {
// TODO Auto-generated method stub
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_PROMPT,
"Talk");
myActivity.startActivityForResult(intent, REQUEST_CODE);
}
最后一行 myActivity
是我传递给包含此方法的类的 Activity 。
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
for (final EditText editText : editTextHandlingList) {
if (requestCode == REQUEST_CODE && resultCode == theActivity.RESULT_OK) {
ArrayList<String> results = data
.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
//log the result }
}
}
现在的问题是 onActivityResult
方法。我希望能够在同一个类中而不是在 Activity 中得到结果。
如果不清楚,请问我问题..
当我将 Activity 传递给这个类(class)时,有什么方法可以做到这一点吗?应该有一些方法可以在外面处理这个.. 如果您有任何问题,请问我。
最佳答案
我知道这是一个老问题,但在新 api 的帮助下,它很简单:
myActivity.registerForActivityResult(StartActivityForResult()) { result ->
if (result.resultCode == Activity.RESULT_OK) {
// There are no request codes
val data: Intent? = result.data
doSomeOperations()
}
}.launch(yourIntent)
关于android - 如何从另一个类中的 OnActivityResult 获取结果?(在 Activity 之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25557087/