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

无法将Android错误转换为java.lang.String,android,string,button,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 numberClickLi

在我的应用程序中,我有一个数字键盘,由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();
试试这个:
String text=((按钮)v).getText().toString()

尝试以下操作:
String text=((按钮)v).getText().toString()

您的
按钮似乎不包含简单的文本,而是一个
SpannableString
对象。您可以将返回值强制转换为
CharSequence
,而
String
Spannable
都可以在不丢失Spannable标记的情况下实现,或者使用
toString()
检索当前内容。您还可以调用
按钮。append(getCurrentString())
您想添加一些额外的文本。

看起来您的
按钮不包含简单的文本,而是一个
SpannableString
对象。您可以将返回值强制转换为
CharSequence
,而
String
Spannable
都可以在不丢失Spannable标记的情况下实现,或者使用
toString()
检索当前内容。您还可以调用
按钮.append(getCurrentString())
您想要附加一些文本