【问题标题】:ViewGroup crashes appViewGroup 崩溃应用
【发布时间】:2016-06-28 20:20:12
【问题描述】:

我正在使用 GitHub here,它可以让您轻松放大 imageViews。但是他们有一个问题,如果 ImageView 在 ViewGroup 中,它会使应用程序崩溃。所以他们建议了一个解决方法,当我将解决方法代码实施到我的项目中时它没有工作。

建议代码:

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;

import com.mxn.soul.flowingdrawer_core.LeftDrawerLayout;

/**
 * Created by user on 2016-06-28.
 */
public class HackyProblematicViewGroup extends LeftDrawerLayout {

public HackyProblematicViewGroup(Context context, AttributeSet attrs) {
    super(context, attrs);
}

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
    try {
        return super.onInterceptTouchEvent(ev);//The error first goes here then to the LeftDrawerLayout on the bottom!
    } catch (IllegalArgumentException e) {
        //uncomment if you really want to see these errors
        //e.printStackTrace();
        return false;
    }
}
}

错误信息:

06-28 16:07:51.764 614-614/com.wilsapp.wilsapp E/ViewDragHelper: Ignoring pointerId=1 because ACTION_DOWN was not received for this pointer before ACTION_MOVE. It likely happened because  ViewDragHelper did not receive all the events in the event stream.
06-28 16:07:51.772 614-614/com.wilsapp.wilsapp E/InputEventReceiver: Exception dispatching input event.
06-28 16:07:51.772 614-614/com.wilsapp.wilsapp D/AndroidRuntime: Shutting down VM
06-28 16:07:51.789 614-614/com.wilsapp.wilsapp E/AndroidRuntime: FATAL EXCEPTION: main
                                                             Process: com.wilsapp.wilsapp, PID: 614
                                                             java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
                                                                 at android.support.v4.widget.ViewDragHelper.saveLastMotion(ViewDragHelper.java:849)
                                                                 at android.support.v4.widget.ViewDragHelper.shouldInterceptTouchEvent(ViewDragHelper.java:1057)
                                                                 at com.mxn.soul.flowingdrawer_core.LeftDrawerLayout.onInterceptTouchEvent(LeftDrawerLayout.java:212)
                                                                 at com.wilsapp.wilsapp.HackyProblematicViewGroup.onInterceptTouchEvent(HackyProblematicViewGroup.java:22)
                                                                 at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2108)
                                                                 at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
                                                                 at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
                                                                 at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
                                                                 at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
                                                                 at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
                                                                 at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
                                                                 at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
                                                                 at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
                                                                 at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
                                                                 at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
                                                                 at com.android.internal.policy.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2403)
                                                                 at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1737)
                                                                 at android.app.Activity.dispatchTouchEvent(Activity.java:2771)
                                                                 at com.wilsapp.wilsapp.Buyer_Home_Page.dispatchTouchEvent(Buyer_Home_Page.java:410)
                                                                 at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60)
                                                                 at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60)
                                                                 at com.android.internal.policy.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2364)
                                                                 at android.view.View.dispatchPointerEvent(View.java:9520)
                                                                 at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4230)
                                                                 at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4096)
                                                                 at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
                                                                 at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3695)
                                                                 at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3661)
                                                                 at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3787)
                                                                 at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3669)
                                                                 at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3844)
                                                                 at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
                                                                 at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3695)
                                                                 at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3661)
                                                                 at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3669)
                                                                 at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
                                                                 at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5922)
                                                                 at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5896)
                                                                 at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5857)
                                                                 at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6025)
                                                                 at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
                                                                 at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method)
                                                                 at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:176)
                                                                 at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:5996)
                                                                 at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:6048)
                                                                 at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
                                                                 at android.view.Choreographer.doCallbacks(Choreographer.java:670)
                                                                 at android.view.Choreographer.doFrame(Choreographer.java:600)
                                                                 at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
                                                                at android.os.Handler.handleCallb

我是我添加的代码错误还是?

此外,LeftDrawerLayout 类来自this GitHub 这里,错误中的另一行代码也指向此:

public class LeftDrawerLayout extends ViewGroup {
...
    @Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
    return mHelper.shouldInterceptTouchEvent(ev);
}
...

此应用在 Nexus 6 v6.0.1 上测试

【问题讨论】:

    标签: android viewgroup


    【解决方案1】:

    ArrayIndexOutOfBoundsException 不是IllegalArgumentException 的子类。虽然如果你真的想捕捉那个异常,你可以用Exception替换IllegalArgumentException

    【讨论】:

    • 当我将 catch 更改为 Exception 时,我仍然收到错误
    • 我实际上修复了其他问题,并使用此代码解决了我原来的问题!谢谢! (查看this 以更深入地解释我为其他人寻找的解决方案!)
    猜你喜欢
    • 2014-07-21
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    • 2011-03-31
    相关资源
    最近更新 更多