解决方法(Android WebView JellyBean - >不应该发生:找不到基于矩形的测试节点)不适合我

时间:2013-03-29 01:16:23

标签: java javascript android android-viewpager ontouchevent

我在扩展WebView的类中尝试了sra's workaround。不幸的是,我仍然看到这个错误。

我通过将Log.i(...)弹出到MyWebView.java来验证我实际上正在使用MyWebView:

@Override
public boolean onTouchEvent(MotionEvent event) {

    if (event.getAction() == MotionEvent.ACTION_DOWN){
        Log.d("DEBUG ::: ", "in onTouchEvent() ---> ACTION_DOWN");

        int temp_ScrollY = getScrollY();
        scrollTo(getScrollX(), getScrollY() + 1);
        scrollTo(getScrollX(), temp_ScrollY);

    }

    return super.onTouchEvent(event);
}

我看到" DEBUG :::" ...等...每次刷卡所以我知道MyWebView正在使用而不是WebView本身。有趣的是,我只能得到"不应该发生:没有找到基于矩形的测试节点"向右滑动>向左滑动消息(滑动页面1-N)。当我向左滑动>向右滑动页面N-1时,我看不到错误。

我的片段.xml中的MyWebView:

<com.example.viewpager2.MyWebView
android:id="@+id/webView2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true">
</com.example.viewpager2.MyWebView>

和MyWebView.java:

package com.example.viewpager2;

import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.webkit.WebView;

public class MyWebView extends WebView  {

    public MyWebView(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }

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

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

    @Override
    public boolean onTouchEvent(MotionEvent event) {

        if (event.getAction() == MotionEvent.ACTION_DOWN){
            Log.d("DEBUG ::: ", "in onTouchEvent() ---> ACTION_DOWN");

            int temp_ScrollY = getScrollY();
            scrollTo(getScrollX(), getScrollY() + 1);
            scrollTo(getScrollX(), temp_ScrollY);

        }

        return super.onTouchEvent(event);
    }
}

并不是说sra在任何方面都是错误的,但如果我做错了什么,我很乐意纠正它! sra的解决方案似乎是一个小说,我希望它对我有用。 : - (

顺便说一下,无论是在Nexus 7模拟器中还是在我的Nook Tab w / CM10.1上,我都会看到此错误

编辑,2013-03-29 :我昨晚和今天早上做了一些挖掘工作,主要是因为经过一些更多的屏幕触摸和模拟器,我发现[sra&#39; s解决方法]有时为我工作,但并不总是为Right-&gt;左(滑动页面1-N)。我发现在我的Nook Tab上解决方法比在Nexus 7仿真器上更频繁地工作。

在我的onTouchEvent(...)方法内部,首先在上面引用,我添加了另外两个Log.d(...),这一次告诉我getScrollX()的值是什么:

@Override
public boolean onTouchEvent(MotionEvent event) {

if (event.getAction() == MotionEvent.ACTION_DOWN){
    Log.d("DEBUG ::: ", "in onTouchEvent() ---> ACTION_DOWN");

    int temp_ScrollY = getScrollY();

    int temp_ScrollX = getScrollX();
    if(temp_ScrollX > 0) {
        Log.d("RESET X COORD: WAS STARTING AT ", Integer.toString(temp_ScrollX));
        setScrollX(0);
    }
    scrollTo(getScrollX(), getScrollY() + 1);
    scrollTo(getScrollX(), temp_ScrollY);
    Log.d("  DEBUG COORDS::: ", "X=" + Integer.toString(getScrollX()) + " Y=" + Integer.toString(getScrollY()) + " Y2=" + Integer.toString(temp_ScrollY));
}

return super.onTouchEvent(event);

}

在我的跟踪日志中,这产生了1-N的以下内容(如前所述,我从未看到任何针对N-1的基于矩形的测试):

03-29 06:54:32.976: E/webcoreglue(9475): Should not happen: no rect-based-test nodes found
03-29 06:54:33.335: D/DEBUG :::(9475): in onTouchEvent() ---> ACTION_DOWN
03-29 06:54:33.335: D/RESET X COORD: WAS STARTING AT(9475): 1949
03-29 06:54:33.335: D/DEBUG COORDS:::(9475): X=0 Y=10 Y2=10
03-29 06:54:33.734: D/DEBUG :::(9475): in onTouchEvent() ---> ACTION_DOWN

仔细检查一下,当我从Right-&gt; Left(1-N)中干净地滑动时,就好是当我在边框上滑动时,sra的解决方法总是作品。当我不准确地在边界上滑动时,sra的解决方法不起作用。当我使用模拟器时,可以通过较差的鼠标点击来解释更多常规故障,并且这些故障的发生频率比我使用触摸时更频繁。

所以我现在想的是 - 并且想知道这里是否有人有任何建议 - 如果我应该尝试处理某些事件而不是接触,那就是为什么我&#39我刷的时候看到这个问题了?

2

0 个答案:

没有答案