我的问题非常直截了当。我似乎无法弄清楚为什么它会抛出这种错误(补充一下,我从来没有真正使用过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'。我真的很感激一些帮助。
由于
答案 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类进行十分转换的软件包的名称