我正在使用Android Studio的導航抽屜活動,並且我想要一個小吃店出現,只要我點擊抽屜中的一個按鈕,但是當我點擊它時,應用崩潰。 下面是代碼運行的一個簡化版本,當我點擊導航按鈕之一:當我嘗試顯示小吃店時,我的應用崩潰了
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
int id = item.getItemId();
if (id == R.id.nav_playstore) {
Snackbar.make(findViewById(R.id.nav_playstore), "This app is not available on the Play Store yet", Snackbar.LENGTH_LONG).show();
}
我認爲這個問題是我應該取代findViewById(R.id.nav_playstore)
別的東西,但我不知道我會放在那裏。如果你需要更多的信息,我可以給你一些。謝謝:)
編輯:這裏的堆棧跟蹤:
08-03 10:03:45.658 20870-20870/ca.davesautoservice.davesautoservice E/AndroidRuntime: FATAL EXCEPTION: main
Process: ca.davesautoservice.davesautoservice, PID: 20870
java.lang.NullPointerException
at android.support.design.widget.Snackbar.<init>(Snackbar.java:183)
at android.support.design.widget.Snackbar.make(Snackbar.java:215)
at ca.davesautoservice.davesautoservice.MainActivity.onNavigationItemSelected(MainActivity.java:106)
at android.support.design.widget.NavigationView$1.onMenuItemSelected(NavigationView.java:151)
at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:811)
at android.support.v7.view.menu.SubMenuBuilder.dispatchMenuItemSelected(SubMenuBuilder.java:84)
at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152)
at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:958)
at android.support.design.internal.NavigationMenuPresenter$1.onClick(NavigationMenuPresenter.java:318)
at android.view.View.performClick(View.java:4463)
at android.view.View$PerformClick.run(View.java:18770)
at android.os.Handler.handleCallback(Handler.java:808)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5333)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:828)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:644)
at dalvik.system.NativeStart.main(Native Method)
任何其他張貼異常 – Blackbelt
你應該通過一個視圖(而不是一個菜單)...所以,更換堆棧跟蹤findViewById(R.id.nav_playstore) (例如:findViewById(R.id.my_text_view) – W0rmH0le
在'onCreate()'內執行'findViewById(...)'的東西,然後在你想要的地方使用你的視圖,此外,還有第一個參數'Snackbar。 make(...)'應該是「Snackbar」消息的容器視圖,而不是其他任何東西。 –