2016-04-17 3 views
-3

Я пытаюсь отобразить Snackbar всякий раз, когда я нажимаю элемент моего параметра, но когда я это делаю, мое приложение падает. Кто-нибудь знает, что здесь не так, и что можно сделать для решения этой проблемы?Android Snackbar не появляется, когда я нажимаю Option Item

enter image description here

ява

public class MainActivity extends AppCompatActivity { 
    private static CoordinatorLayout coordinatorLayout; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     int id = item.getItemId(); 

     if (id == R.id.action_settings) { 
      Snackbar.make(coordinatorLayout, "Single Line SnackBar Demo.", Snackbar.LENGTH_SHORT).show(); 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 

Logcat

04-17 09:22:58.260 20108-20108/com.apptacularapps.snackbar E/AndroidRuntime: FATAL EXCEPTION: main 
                      Process: com.apptacularapps.snackbar, PID: 20108 
                      java.lang.NullPointerException 
                       at android.support.design.widget.Snackbar.<init>(Snackbar.java:183) 
                       at android.support.design.widget.Snackbar.make(Snackbar.java:215) 
                       at com.apptacularapps.snackbar.MainActivity.onOptionsItemSelected(MainActivity.java:49) 
                       at android.app.Activity.onMenuItemSelected(Activity.java:2600) 
                       at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:404) 
                       at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:179) 
                       at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:100) 
                       at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:100) 
                       at android.support.v7.app.ToolbarActionBar$2.onMenuItemClick(ToolbarActionBar.java:69) 
                       at android.support.v7.widget.Toolbar$1.onMenuItemClick(Toolbar.java:169) 
                       at android.support.v7.widget.ActionMenuView$MenuBuilderCallback.onMenuItemSelected(ActionMenuView.java:760) 
                       at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:811) 
                       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.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:948) 
                       at android.support.v7.view.menu.MenuPopupHelper.onItemClick(MenuPopupHelper.java:191) 
                       at android.widget.AdapterView.performItemClick(AdapterView.java:299) 
                       at android.widget.AbsListView.performItemClick(AbsListView.java:1113) 
                       at android.widget.AbsListView$PerformClick.run(AbsListView.java:2911) 
                       at android.widget.AbsListView$3.run(AbsListView.java:3645) 
                       at android.os.Handler.handleCallback(Handler.java:733) 
                       at android.os.Handler.dispatchMessage(Handler.java:95) 
                       at android.os.Looper.loop(Looper.java:136) 
                       at android.app.ActivityThread.main(ActivityThread.java:5001) 
                       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:785) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
                       at dalvik.system.NativeStart.main(Native Method) 
+1

КоординаторLayout не инициализирован или не установлен. –

+0

где привязка snackBar? –

+0

Опубликовать полный код? –

ответ

4

Вы не инициализируете макет координатора. Инициализировать это нравится:

coordinatorLayout = (CoordinatorLayout) findViewById(R.id.yourCoordinatorLayoutId); 
1

Может быть ваш coordinatorlayout не инициализирован или определено в class.That может быть причиной для Исключение Null Pointer вы получаете.

0

Initialise CoordinatorLayout или пройти любой вид ребенка из CoordinatorLayout

т.е.

coordinatorLayout = (CoordinatorLayout) findViewById(R.id.yourCoordinatorLayoutId); 

ИЛИ

TextView textView = (TextView) findViewById(R.id.yourTextViewID); 

где ваш TexView пребывает внутри вашего CoordinatorLayout, а затем па с этой точки зрения на ваш Snackbar:

Snackbar.make(textView, "Single Line SnackBar Demo.", Snackbar.LENGTH_SHORT).show(); 
Смежные вопросы