将数据提供给其他实际上无法正常工作的活动

时间:2018-07-04 21:39:58

标签: android android-activity

有关什么的代码:
使用我的代码,我可以打开麦克风,对着麦克风讲话并查看输出。

当前情况
现在,如果我对着麦克风讲话,我会看到输出并直接跳到其他活动中。

要求
我想在活动中获取输出,但是在发短信之前,我先向您展示代码。

Mainactivity.java

private TextView voiceInput;
private ImageView 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 = (ImageView) 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, "Sprechen Sie was ein");
    //tent.putStringArrayListExtra("result",resultat);
    try {
        startActivityForResult(intent, REQ_CODE_SPEECH_INPUT);
    } catch (ActivityNotFoundException a) {

    }
}
@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) {
                Intent intent=new Intent(this,Zweites.class);
                ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
                voiceInput.setText(result.get(0));
                intent.putStringArrayListExtra("resultat",result);
                //ActivityZweites wird gestartet
                startActivity(intent);
            }
            break;
        }

    } }} <br>

我遇到了以下问题:

    if (resultCode == RESULT_OK && null != data) {

        ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
        //Ausgabe in andere Activity
        voiceInput.setText(result.get(0));
        Intent intent=new Intent(this,Zweites.class);
        intent.putStringArrayListExtra("resultat",result);
        //ActivityZweites wird gestartet
        startActivity(intent);
    }
    break;
}

它在那里输出语音输入:

voiceInput.setText(result.get(0));

然后跳入活动。
如何在不先显示输出并跳入另一个活动的情况下在活动中获得此输出?

我尝试了一些方法,但是没有找到解决此问题的解决方案。
你们有什么主意吗?

亲切的问候

1 个答案:

答案 0 :(得分:0)

如果您只是想将相同的文本传递给您在TextView中显示的意图,请交换

intent.putStringArrayListExtra("resultat",result);

使用

intent.putExtra("resultat", result.get(0));

然后,在您的Zweites活动中,您可以像这样获得字符串:

Intent intent = getIntent();
String text = intent.getStringExtra("resultat");