Я попытался расширить класс WebView в своем приложении, чтобы я мог обнаружить считывания:
public class BookOne extends Activity {
public static final String LOG_TAG = "BookOne";
private MyWebView browser;
private WebView listing_area;
private GestureDetector detector;
public class MyWebView extends WebView {
GestureDetector gd;
public MyWebView(Context context, AttributeSet attributes) {
super(context, attributes);
this.
gd = new GestureDetector(new SwipeDetector());
}
@Override
public boolean onTouchEvent(MotionEvent event) {
Log.v(LOG_TAG, "onTouchEvent 2");
return (gd.onTouchEvent(event) || super.onTouchEvent(event));
}
};
В моем файле main.xml я ссылался на MyWebView следующим образом:
где я считаю, что mikes.BookOne.BookOne.MyWebView - это полный путь к новому типу класса.
К сожалению, я получаю ошибки в окне LogCat при попытке его запустить:
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): FATAL EXCEPTION: main
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): java.lang.RuntimeException: Unable to start activity ComponentInfo{mikes.BookOne/mikes.BookOne.BookOne}:android.view.InflateException: Binary XML file line #62: Error inflating class mikes.BookOne.BookOne.MyWebView
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1815)
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1831)
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): at android.app.ActivityThread.access$500(ActivityThread.java:122)
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1024)
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): at android.os.Handler.dispatchMessage(Handler.java:99)
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): at android.os.Looper.loop(Looper.java:132)
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): at android.app.ActivityThread.main(ActivityThread.java:4123)
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): at java.lang.reflect.Method.invokeNative(Native Method)
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): at java.lang.reflect.Method.invoke(Method.java:491)
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): at dalvik.system.NativeStart.main(Native Method)
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): Caused by: android.view.InflateException: Binary XML file line #62: Error inflating class mikes.BookOne.BookOne.MyWebView
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:682)
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): at android.view.LayoutInflater.rInflate(LayoutInflater.java:724)
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): at android.view.LayoutInflater.rInflate(LayoutInflater.java:727)
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): at android.view.LayoutInflater.inflate(LayoutInflater.java:479)
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): at android.view.LayoutInflater.inflate(LayoutInflater.java:391)
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): at android.view.LayoutInflater.inflate(LayoutInflater.java:347)
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:223)
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): at android.app.Activity.setContentView(Activity.java:1786)
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): at mikes.BookOne.BookOne.onCreate(BookOne.java:192)
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): at android.app.Activity.performCreate(Activity.java:4397)
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1779)
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): ... 11 more
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): Caused by: java.lang.ClassNotFoundException: mikes.BookOne.BookOne.MyWebView in loader dalvik.system.PathClassLoader[/data/app/mikes.BookOne-1.apk]
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:251)
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): at java.lang.ClassLoader.loadClass(ClassLoader.java:540)
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): at java.lang.ClassLoader.loadClass(ClassLoader.java:500)
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): at android.view.LayoutInflater.createView(LayoutInflater.java:542)
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:671)
07-18 23:14:33.630: ERROR/AndroidRuntime(22630): ... 22 more
и приложение прерывается при загрузке.
Ошибки Layout Inflater, похоже, указывают на первую строку XML-записи в main.xml, но я не понимаю, в чем я ошибся. Кто-нибудь может помочь?
Спасибо,
MikeS