觸摸崩潰升級到設計支持庫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 –