我有一个自定义TextView类扩展TextView:
public class MessagingTextView extends TextView {
public MessagingTextView(Context context) {
super(context);
}
public void make(String body, Boolean sent){
this.setText(body);
if (sent){
this.setPadding(10, 10, 25, 10);
this.setBackgroundResource(R.drawable.sent_bubble);
}
else{
this.setPadding(25, 10, 10, 10);
this.setBackgroundResource(R.drawable.sent_bubble);
}
}
}
在我的活动中(在自定义适配器中)我通过以下代码实例化该类:
MessagingTextView body = (MessagingTextView)item.findViewById(R.id.s4_msg_body);
body.make(currentMsg.getBody(), currentMsg.getSent());
当我运行该代码时,我的应用程序崩溃,日志显示Cast Exception。 你能告诉我怎么解决这个问题? 提前谢谢!
这是Xml s4_item.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/s4_msg_body"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/s4_msg_date"
android:text="Message body"
android:textSize="20dp" />
<TextView
android:id="@+id/s4_msg_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:text="Message date"
android:textAppearance="?android:attr/textAppearanceSmall" />
</RelativeLayout>
答案 0 :(得分:1)
在XML中,您宣布TextView
。你不能将它强制转换为任意子类,在本例中是MessagingTextView
。如果您希望它成为子类,那么您必须将其声明为此类。
类似的东西:
<com.some.package.name.MessagingTextView
android:id="@+id/s4_msg_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:text="Message date"
android:textAppearance="?android:attr/textAppearanceSmall" />