0

AKTUALISIERT: Ich erstelle eine App, wo onClickListener verwendet wird, um Sprache in Text zu konvertieren und den Text in ein List View Feld einzugeben. Ebenfalls einmal trat ich in die Sprache wieder auslösen möchten Option und geben Sie den neuen Text in ein anderes List View Feld in Text, während immer noch alle anderen List View Felder beibehalten, die in bereits gefüllt waren.Wie kann onClick mehrmals in derselben Aktivität aufgerufen werden?

Der folgende Teil der Java-Datei Das ruft die Option Sprache zu Text mit den verschiedenen Anweisungen auf, die ich beantworten möchte. Ursprünglich erschienen die Eingabeaufforderungen genau nach dem nächsten, was perfekt ist, aber es hat nicht jeden Text dem entsprechenden Bearbeitungstextfeld zugewiesen. Es hat nur die Rede zum Text nur der letzten Aufforderung aufgezeichnet. Jetzt mit etwas Hilfe auf diesem Thread habe ich den Code die folgenden aktualisiert, wo checklv1 usw. entsprechen eindeutige Zahlen:

public void onClick(View v){ 
    Intent i1 = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
    i1.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
    i1.putExtra(RecognizerIntent.EXTRA_PROMPT, "What is the current time?"); 
    startActivityForResult(i1, check); 

    Intent i2 = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
    i2.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
    i2.putExtra(RecognizerIntent.EXTRA_PROMPT, "Is the status Confirmed or Unconfirmed?"); 
    startActivityForResult(i2, checklv1); 

    Intent i3 = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
    i3.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
    i3.putExtra(RecognizerIntent.EXTRA_PROMPT, "What is the Temp?"); 
    startActivityForResult(i3, checklv2); 
} 

Der folgende Teil des Codes zeigt den Text in das editText Feld zuweisen lv1, lv2 und lv3 :

der Code jetzt schreitet voran und die Spracheingabe Phrasen in jedem der list view Felder in Text. Allerdings ist mein einziges Problem, dass lv3 enthält die richtige Wendung, lv1 enthält auch die richtige Wendung, aber lv2 ist eine gleiche Phrase wie lv1, wenn es die entsprechende lv2 entsprechen sollte. Höchstwahrscheinlich stimmt mit der Prüfungsaufgabe etwas nicht.

Wenn jemand kann mir bitte helfen, wo ich in den obigen Code falsch gelaufen, die sich stark

+0

startIntent -> onActivityResult -> startIntent -> onActivityResult -> startIntent -> onActivityResult. Vergessen Sie nicht, Ihren gespeicherten Status zu behandeln. –

+0

Wissen Sie, wo im Code ich startIntent onActivityResult @Eugen Pechanec setzen sollte? –

+0

Komm schon, du kannst es selbst herausfinden. Beginnen Sie nicht sofort mit der Spracherkennung, nur die letzte Anfrage wird berücksichtigt, genau wie Sie es verifiziert haben. Stattdessen starte das erste onClick. Wenn das Ergebnis erfolgreich zurückkehrt, starte den zweiten und so weiter. –

Antwort

2

Die check Feld sind vorbei geschätzt werden Sie startActivityForResult ist, was sollten Sie die Aktion zu unterscheiden, verwenden Sie durchführen, sind . Übergeben Sie hier 3 verschiedene Werte und schalten Sie sie unter onActivityResult ein, um festzustellen, welchen Teil der Benutzeroberfläche Sie aktualisieren möchten.

startActivityForResult(i2, checkLv1);

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == RESULT_OK) { 
     switch(requestCode) { 
      case checkLv1: 
       update(lv1); 
     ... 
+0

Vielen Dank für Ihre Antwort, haben Sie etwas dagegen klar, welcher Teil in der onClick-Methode und onActivityResult-Methode geht Muss ich etwas anderes ursprünglich in meinem Code löschen? –

+0

Können Sie mir mit meinem aktualisierten Code, der oben auf @darnmason angezeigt wird, helfen, wo ich falsch gelaufen bin? –

Verwandte Themen