Android 서랍의 탐색 창 활동을 사용하고 있으며 서랍에있는 버튼 중 하나를 클릭 할 때마다 스낵바를 표시하고 싶지만 클릭하면 앱이 다운됩니다 . 내가 탐색 버튼 중 하나를 클릭하면 다음 코드 실행의 단순화 된 버전입니다 :스낵바 표시 시도시 내 앱이 작동을 멈 춥니 다
@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
'findViewById (...)'를'onCreate()'안에서 수행하십시오. 당신이 원할 때마다 당신의 뷰를 사용하고 게다가'Snackbar. make (...)'는 Snackbar 메시지에 대한 컨테이너 뷰 여야합니다. –