在我的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)
来自docs:
public String toString()
返回的字符串表示形式 宾语。通常,toString方法返回一个字符串 “文字表示”这个对象。结果应该是简洁但是 信息表达,便于人们阅读。它是 建议所有子类都重写此方法。 toString 类Object的方法返回一个由名称组成的字符串 对象是实例的类,符号字符“@”, 和哈希码的无符号十六进制表示 宾语。换句话说,此方法返回一个等于的字符串 价值:
getClass()。getName()+'@'+ Integer.toHexString(hashCode())
这意味着toString()
将返回Object
的字符串表示形式。在这种情况下,它是Intent
对象。可能返回的是一个名为Class
的String及其在内存中的位置。
您要做的是使用Intent
之一从getX()
获取所需的值。