自定义Webview上的ClassCastException

时间:2013-10-17 14:32:01

标签: android classcastexception

在我的onCreate中,我有:

MyWebView webView = new MyWebView(this, null);
webView = (MyWebView) findViewById(R.id.pdf);

Deal类中的自定义webview类:

public class MyWebView extends WebView {

     Paint p = new Paint();

     public MyWebView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override protected void onDraw(Canvas canvas) {

         super.onDraw(canvas);
         p.setColor (Color.RED);
         canvas.drawLine (20, 10, 300, 400, p);
     }
 }

XML:

<im.magic.dealpdf.Deal.MyWebView
    android:id="@+id/pdf"
    android:layout_weight="0.4"
    android:layout_margin="5dp"
    android:layout_width="0dp"
    android:layout_height="match_parent"/>

错误表明它没有找到类im.magic.dealpdf.Deal.MyWebView。为什么错误会出现?将xml更改为im.magic.dealpdf.Deal会导致cannot be cast to android.view.View

更新:我想我需要在Deal类中扩展View。但它已经扩展了活动

1 个答案:

答案 0 :(得分:2)

您不应该以这种方式使用内部类,将MyWebView声明为

public static class MyWebView extends WebView {
...
}

否则,无法在Deal实例外创建MyWebView实例。 在布局文件中不能以这种方式引用内部类,因为here你必须写这样的东西:

<view class="im.magic.dealpdf.Deal@MyWebView" 
    android:id="@+id/pdf"
    android:layout_weight="0.4"
    android:layout_margin="5dp"
    android:layout_width="0dp"
    android:layout_height="match_parent"/>