2016-01-11 195 views
0

我有一個應用程序,它爲用戶提供了使用按鈕來選擇是或否的一系列問題的選項。我想在用戶說「是」或「否」時添加免提功能,並且應該訪問相同的代碼塊。然而,我很難理解我是如何「虛擬」調用yes/no按鈕的setOnCheckedChangeListener事件來獲取代碼的?是否可以進行調用它的虛擬按鈕調用?我附上了一段代碼,希望能夠說明一些情況。在沒有按鈕的情況下調用setOnCheckedChangeListener點擊

代碼:

recognizerIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
speech.startListening(recognizerIntent); 

public void onResults(Bundle results) 
{ 
    ArrayList<String> matches = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION); 

    for (String result : matches) 
    { 

     switch (result) 
     { 
      case "yes": 
       speech_response_yes=true; 
       break; 
      case "no": 
       speech_response_no=true; 
       break; 
     } 
    } 
} 

answer.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()   { 
      @Override 
      public void onCheckedChanged(RadioGroup group, int checkedId) 
      { 
       // checkedId is the RadioButton selected 
       if (checkedId == R.id.yesButton || speech_response_yes) 
       { 
        ....perform relevant tasks 
       } 
+0

您可以將相關的代碼可能移動到一個單獨的函數,然後調用從按鈕單擊處理以及語音處理程序的功能? –

+0

是的,這是一個選項,但由於與每個後續點擊相關的數量代碼,試圖避免類似代碼的多個代碼,而是使用相同的 – user5351986

回答

0

僅僅通過設置單選按鈕爲選中,您將調用SetOnCheckChangedListener。

for (int i=0;i<count;i++) { 
    View o = answer.getChildAt(i); 
    if (o instanceof RadioButton) { 

     if (o.getId() == R.id.yourButton) { 
     o.setChecked(true); 
     } 
    } 
} 
+0

感謝您的答覆。我試過這樣,它不會觸發SetOnCheckhangedListener,它只保留複選框而不觸發後續代碼 – user5351986

相關問題