gpt4 book ai didi

android - 关闭 Snackbar/ViewDragHelper 时出现 ArrayIndexOutOfBoundsException

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:14:06 25 4
gpt4 key购买 nike

在我的一些应用程序中实现新的 Snackbar 后,我收到以下错误:

java.lang.ArrayIndexOutOfBoundsException: length=1; index=1 at
android.support.v4.widget.ViewDragHelper.shouldInterceptTouchEvent(SourceFile:1014) at
android.support.design.widget.SwipeDismissBehavior.onInterceptTouchEvent(SourceFile:188) at
android.support.design.widget.Snackbar$Behavior.onInterceptTouchEvent(SourceFile:659) at
android.support.design.widget.Snackbar$Behavior.onInterceptTouchEvent(SourceFile:641) at
android.support.design.widget.CoordinatorLayout.performIntercept(SourceFile:343) at
android.support.design.widget.CoordinatorLayout.onInterceptTouchEvent(SourceFile:376) at
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1827) at
android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2241) at
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1946) at
android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2241) at
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1946) at
android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2241) at
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1946) at
android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2241) at
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1946) at
android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2241) at
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1946) at
android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2241) at
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1946) at
com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1968) at
com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1420) at
android.app.Activity.dispatchTouchEvent(Activity.java:2428) at
android.support.v7.internal.view.WindowCallbackWrapper.dispatchTouchEvent(SourceFile:59) at
android.support.v7.internal.view.WindowCallbackWrapper.dispatchTouchEvent(SourceFile:59) at
com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1916) at
android.view.View.dispatchPointerEvent(View.java:7475) at
android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3744) at
android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3672) at
android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4924) at
android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4884) at
android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5036) at
android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:179) at
android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method) at
android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:171) at
android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:5004) at
android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:5058) at
android.view.Choreographer$CallbackRecord.run(Choreographer.java:776) at
android.view.Choreographer.doCallbacks(Choreographer.java:579) at
android.view.Choreographer.doFrame(Choreographer.java:546) at
android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:762) at
android.os.Handler.handleCallback(Handler.java:725) at
android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:153) at
android.app.ActivityThread.main(ActivityThread.java:5299) at java.lang.reflect.Method.invokeNative(Native
Method) at java.lang.reflect.Method.invoke(Method.java:511) at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833) at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) at dalvik.system.NativeStart.main(Native
Method)

我在这里使用相同的设置:https://github.com/chrisbanes/cheesesquare/blob/master/app/src/main/java/com/support/android/designlibdemo/MainActivity.java

public class MainActivity extends AppCompatActivity {

private Snackbar snackbar;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

// if showing already, close
if (this.snackbar != null) {
this.snackbar.dismiss();
}

// make new snackbar
this.snackbar = Snackbar.make(view, "Here's a Snackbar", Snackbar.LENGTH_LONG).show();


// chris banes example
// Snackbar.make(view, "Here's a Snackbar", Snackbar.LENGTH_LONG).setAction("Action", null).show();

}
});
}

@Override
public void onPause() {
super.onPause();
// dismiss when user clicks "home"
if (this.snackbar != null) {
this.snackbar.dismiss();
}
}
}

总结:

  • 我正在使用 Snackbar
  • 我正在使用 CoodinartorLayout
  • 我没有使用DrawerLayout

Google 问题:

根据异常中 android.support.v4.widget.ViewDragHelper.shouldInterceptTouchEvent(SourceFile:1014) at 行,我猜它与 Snackbar?

也许我不应该在 onPause关闭 Snackbar?我曾经用 Toast 来做到这一点。

最佳答案

我找到的一个解决方案是使用 findViewById(android.R.id.content) 确保它不是“可滑动”的。该解决方案基本上“避免”并防止了错误的发生。

Snackbar.make(findViewById(android.R.id.content), "Hello!", Snackbar.LENGTH_LONG);

应在 23.2.1 中修复:https://stackoverflow.com/a/36004008/950427

关于android - 关闭 Snackbar/ViewDragHelper 时出现 ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30986163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com