Android错误无法强制转换为java.lang.String

时间:2016-02-22 14:22:39

标签: android string button

在我的应用程序中,我有一个数字小键盘,由9个按钮组成。通过课程我得到为字符串选择的数字。 当我试图得到它们时,我得到了错误。

创建

int numberButtons[] = {R.id.b1, R.id.b2, R.id.b3,
            R.id.b4, R.id.b5, R.id.b6, R.id.b7,
            R.id.b8, R.id.b9, R.id.b0};
    NumberButtonClickListener numberClickListener = new NumberButtonClickListener();
    for (int id : numberButtons) {
        View v = findViewById(id);
        v.setOnClickListener(numberClickListener);
    }

班级:

private class NumberButtonClickListener implements View.OnClickListener {
    @Override
    public void onClick(View v) {
        String text = (String) ((Button) v).getText();
        setCurrentString(getCurrentString() + text);
    }

    public void setCurrentString(String s) {
        currentString = s;
        new_psw.setText(s);
    }

    public String getCurrentString() {
        return currentString;
    }
}

错误:

java.lang.ClassCastException: android.text.SpannableString cannot be cast to java.lang.String

在这一行:

String text = (String) ((Button) v).getText();

2 个答案:

答案 0 :(得分:2)

试试这个: TCPDF

答案 1 :(得分:2)

您的Button似乎不包含简单文本,而是SpannableString个对象。您可以将返回值强制转换为CharSequence String Spannable,而不会丢失Spannable标记,或使用toString()来检索当前内容。您也可以致电Button.append(getCurrentString())想要附加一些其他文字。