4

入力されたデータをアクティビティから取得しようとしています。メイン画面から、次のようにアクティビティを開始します。

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同じ結果で試しました。

私は何が欠けていますか?

4

2 に答える 2

13

TextView.getText()文字列を返すのではなく、SpannableStringご覧のとおりです。getText().toString()代わりに使用してください。

于 2012-06-14T22:03:38.313 に答える
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();
于 2013-12-11T02:21:28.557 に答える