2012-06-14 91 views
4

我正在嘗試從活動中獲取輸入的數據。從我的主屏幕,我揭開序幕,活動是這樣的:爲什麼我無法通過Intent傳遞數據?

Intent myIntent = new Intent(this, ContactInfo.class); 
startActivityForResult(myIntent, AppState.ACTIVITY_CONTACT_INFO); 

在活動中,當用戶敲擊保存按鈕,我火了以下內容:

Intent intent = new Intent(); 
TextView tvName = (TextView) findViewById(R.id.txtContactName); 
intent.putExtra("Name", tvName.getText()); 

if (getParent() == null) { 
    setResult(Activity.RESULT_OK, intent); 
} else { 
    getParent().setResult(Activity.RESULT_OK, intent); 
} 
finish(); 

在原來的活動,我趕上onActivityResult事件是這樣的:

String contactName = (String) data.getExtras().get("Name"); 

不過,此行吹了java.lang.ClassCastException: android.text.SpannableString cannot be cast to java.lang.String。我也試過getStringExtra,結果相同。

我錯過了什麼?

回答

13

TextView.getText()不會返回字符串,而是您看到的SpannableString。改爲使用getText().toString()

4

有類似的問題,在錯誤出現,android.text.SpannableString不能轉換爲java.lang.String

這是因爲的getText()需要在年底有一個'的toString() 。如果沒有這個'toString()',它會在Android 4.x上崩潰,但會在Android 2.x上運行。

ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); 
TextView viewTxt; // Continue and complete this yourself. 

String tmpStr = (String) viewTxt.getText().toString(); 
相關問題