我正在尝试从活动中获取输入的数据。从我的主屏幕,我开始这样的活动:
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
同样的结果。
我错过了什么?
答案 0 :(得分:13)
TextView.getText()
不返回字符串,而是返回您看到的SpannableString
。请改用getText().toString()
。
答案 1 :(得分: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();