在我的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。但它已经扩展了活动
答案 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"/>