触摸崩溃升级到设计支持库23.0.0和建立SDK 23后,我的应用程序崩溃,当我试图驳回Snackbar
:Android的小吃吧与设计支持库23.0.0
java.lang.NullPointerException: Attempt to invoke virtual method 'int android.view.MotionEvent.getAction()' on a null object reference
at android.support.design.widget.AppBarLayout$Behavior.onInterceptTouchEvent(AppBarLayout.java:729)
at android.support.design.widget.AppBarLayout$Behavior.onInterceptTouchEvent(AppBarLayout.java:629)
at android.support.design.widget.CoordinatorLayout.performIntercept(CoordinatorLayout.java:357)
at android.support.design.widget.CoordinatorLayout.onInterceptTouchEvent(CoordinatorLayout.java:409)
我的天堂” T改为任何事情,因为更新和我使用的唯一途径,我知道关闭显示小吃吧:
Snackbar.make(rootView, getString(R.string.error_no_permissions),Snackbar.LENGTH_LONG).show();
有报道NPE上CoordinatorLayout
一个问题,可能与:CoordinatorLayout NullPointerException in onTouchEvent但我仍然无法找到解决我的情况ñ。我已经试过这possible solution但仍没有运气...
编辑: 原来的解决方案(如@NikolaDespotoski建议)覆盖默认AppBarLayout.Behavior
public class AppBarLayoutBehavior extends AppBarLayout.Behavior {
@Override
public boolean onInterceptTouchEvent(CoordinatorLayout parent, AppBarLayout child,
MotionEvent ev) {
return !(parent != null && child != null && ev != null) || super
.onInterceptTouchEvent(parent, child, ev);
}
}
...并使用它在我们AppBarLayout
((CoordinatorLayout.LayoutParams) findViewById(R.id.appbar).getLayoutParams())
.setBehavior(new AppBarLayoutBehavior());
如果您查看已链接的故障单,您可能会注意到它标记为“FutureRelease”,表示问题已修复,但尚未发布。从8月20日星期四发表的评论来看,“我们希望尽快获得一个修补程序”,希望很快就会有一个发布来解决这个问题。否则,看起来最好的行动方式可能是回到api 22,或者在解决方案发布前忽略问题。 –
看起来像这样,但恐怕Snackbar问题不会得到解决,因为建议的解决方法无法解决问题。无论如何,我想你是对的,最好是如果我回到设计支持22.2.1的生产和构建SDK 22,但这是一个问题,因为我开始准备我的Android M应用程序... –
那么,你可以继续为23.0.0做准备,并且在修复发布之前暂时忽略错误,这将在Android M实际发布给用户之前有望实现。那样你就不会落后于此。如果它确实出来,你只需要建立22 –