Android - 扩展的WebView类在初始化时导致ClassCastException

时间:2012-06-06 19:21:18

标签: java android webview

我的问题非常直截了当。我似乎无法弄清楚为什么它会抛出这种错误(补充一下,我从来没有真正使用过Java,但现在必须使用简单的Android应用程序)。

在我的活动课中,我宣布:

private MyWebView web;

在'onCreate'方法中,我这样做:

try {
    web = (MyWebView)findViewById(R.id.webview);
}
catch(Exception e) {
    Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT);
}

“MyWebView”类看起来像这样:

import android.app.AlertDialog;
import android.content.Context;
import android.util.AttributeSet;
import android.webkit.WebView;


public class MyWebView extends WebView {
    public MyWebView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onScrollChanged(int l, int t, int oldl, int oldt) {
    }
}

这会抛出一个带有detailMessage =“android.webkit.WebView。

的'ClassCastException'。

我真的很感激一些帮助。

由于

2 个答案:

答案 0 :(得分:13)

布局中的名称是错误的一件事。我再次尝试后再次出错,但这次它触发了'MethodNotFoundException'。看来你必须实现这个constrcutor

MyWebView(Context context, AttributeSet attrs)

而不是这个

MyWebView(Context context, AttributeSet attrs, int defStyle)
像日食一样......

答案 1 :(得分:10)

您必须在布局中将自定义WebView命名为:

<yourpackagename.MyWebView
  android:id="@+id/webview"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent" 
 />

yourpackagename:是您对MyWebView类进行十分转换的软件包的名称