1

在我的 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。但它已经扩展了 Activity

4

1 回答 1

2

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

public static class MyWebView extends WebView {
...
}

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

<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"/>
于 2013-10-17T14:46:28.660 回答