2014-03-12 34 views
0

,我有這樣一個開關的情況下條件:可變那麼在我的onActivityResult()方法不會被解析爲字符串

if (resultList.getText().toString().toLowerCase().contains("Hi")){ 

      Random random = new Random(); 
      int numberOfMethods = 4; 

      switch(random.nextInt(numberOfMethods)) { 
       case 0: 
        String txthow = "Hi "+ data.toString()"; 
        tts.speak(txthow, TextToSpeech.QUEUE_FLUSH, null); 
        break; 
       case 1: 
        String txthowdue = "How are you "+data.toString()+"?"; 
        tts.speak(txthowdue, TextToSpeech.QUEUE_FLUSH, null); 
        break; 

      } 

當我的TTS重複data值它重複像intent\00n或反正什麼不對,因爲該值將是例如名稱David。我也宣佈private String data;但沒有任何變化。

+0

請分享所有相關代碼。 –

+0

你是什麼意思?這是代碼的一部分。如果resultList包含「Hi」,則有2個可能的答案。 'data'是一個可以從edittext插入的變量。如果我在編輯文本「david」中編寫TTS,它應該回答例如「Hi david」。 –

+2

數據通常是意圖的名稱。 onActivityResult的第三個參數。你爲什麼期待有什麼不同? – Blackbelt

回答

0

docs

公共字符串的toString()

返回 對象的字符串表示。通常,toString方法返回一個字符串, 「文本表示」此對象。結果應該是一個簡明但易於閱讀的信息性表示。建議所有子類重寫此方法爲 。對於Object類的toString 方法返回一個字符串,其中包含對象爲實例的類的名稱,符號字符「@」, 以及 對象的哈希碼的無符號十六進制表示形式的 的名稱。換句話說,此方法返回一個字符串等於的 值:

的getClass()的getName()+ '@' + Integer.toHexString(hashCode()方法)

這意味着toString()將返回Object的字符串表示形式。在這種情況下,它是一個Intent對象。可能返回的是一個字符串,其名稱爲Class及其在內存中的位置。

你想要做的是從Intent使用其getX()之一來獲得期望的值。

相關問題