2017-02-20 2 views
0

Le casse-croûte ne fonctionne pas à l'intérieur de popupwindow. Voici le code que j'ai essayé. ai d'abord créé popupWindowcomment faire apparaître snackbar au-dessus popupwindow?

//popupwindow 
    LayoutInflater inflater = (LayoutInflater) AddMembersToEventActivity.this.getSystemService(LAYOUT_INFLATER_SERVICE); 
    View editFamilyPopupView = inflater.inflate(R.layout.activity_edit_family_member_popup,null); 
    final RelativeLayout parentLayout = (RelativeLayout)editFamilyPopupView.findViewById(R.id.parent_layout); 
    final PopupWindow editFamilyPopupWindow = new PopupWindow(
      editFamilyPopupView, 
      RelativeLayout.LayoutParams.MATCH_PARENT, 
      RelativeLayout.LayoutParams.MATCH_PARENT 
    ); 
    .... 

appelant méthode snakcbar

showSnackBar(getString(R.string.rashi_msg),parentLayout); 
    ... 

montrant snack

//show snackbar 
public void showSnackBar(String message,ViewGroup viewGroup){ 
    Snackbar snackbar = Snackbar 
      .make(viewGroup, message, Snackbar.LENGTH_LONG); 

    snackbar.show(); 
} 
    //... 
    //exception 
    02-20 13:52:20.747 20762-20762/divine.calcify.com.divine E/AndroidRuntime: FATAL EXCEPTION: main 
                     Process: 
                     java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.view.ViewGroup.getContext()' on a null object reference 
                      at android.support.design.widget.Snackbar.<init>(Snackbar.java:188) 
                      at android.support.design.widget.Snackbar.make(Snackbar.java:220) 
                      at divine.calcify.activities.AddMembersToEventActivity.showSnackBar(AddMembersToEventActivity.java:866) 
                      at divine.calcify.activities.AddMembersToEventActivity$9.onClick(AddMembersToEventActivity.java:663) 
                      at android.view.View.performClick(View.java:4856) 
                      at android.view.View$PerformClick.run(View.java:19956) 
                      at android.os.Handler.handleCallback(Handler.java:739) 
                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                      at android.os.Looper.loop(Looper.java:211) 
                      at android.app.ActivityThread.main(ActivityThread.java:5389) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at java.lang.reflect.Method.invoke(Method.java:372) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1020) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:815) 

comment faire apparaître au-dessus popupWindow snackbar?

+0

D'où appelez-vous 'showSnackBar'? – Sid

Répondre

0

Vous obtenez cette exception car Snackbar ne peut pas se connecter à un view.

Plus en détail ce qui se passe réellement est que Snackbar appelle getContext() sur viewGroup qui semble être null et provoque l'exception à soulever.

p.s. Notez que ce lien pointe vers View.getContext() mais c'est correct car ViewGroup hérite de View.