【问题标题】:Why can't I pass data via Intent?为什么我不能通过 Intent 传递数据?
【发布时间】:2012-06-14 22:01:28
【问题描述】:

我正在尝试从活动中获取输入的数据。从我的主屏幕,我开始这样的活动:

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,结果相同。

我错过了什么?

【问题讨论】:

    标签: java android android-intent android-activity


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      遇到了类似的问题,出现错误的地方,android.text.SpannableString cannot be cast to 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();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-02-02
        • 2011-11-19
        • 2016-07-19
        • 2012-12-29
        • 1970-01-01
        • 2013-07-04
        • 1970-01-01
        相关资源
        最近更新 更多