变量未解析为字符串

时间:2014-03-12 17:54:59

标签: android

在我的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;但没有任何改变。

1 个答案:

答案 0 :(得分:0)

来自docs

public String toString()

  

返回的字符串表示形式   宾语。通常,toString方法返回一个字符串   “文字表示”这个对象。结果应该是简洁但是   信息表达,便于人们阅读。它是   建议所有子类都重写此方法。 toString   类Object的方法返回一个由名称组成的字符串   对象是实例的类,符号字符“@”,   和哈希码的无符号十六进制表示   宾语。换句话说,此方法返回一个等于的字符串   价值:

     

getClass()。getName()+'@'+ Integer.toHexString(hashCode())

这意味着toString()将返回Object的字符串表示形式。在这种情况下,它是Intent对象。可能返回的是一个名为Class的String及其在内存中的位置。

您要做的是使用Intent之一从getX()获取所需的值。