2017-02-20 12 views
0

snackbar는 popupwindow에서 작동하지 않습니다. 여기 내가 시도한 코드가있다. 는 우선 생성 popupwindowsnackbar를 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 
    ); 
    .... 

snakcbar 방법

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

도시

//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) 

방법은 플로팅 작업 popupwindow 위에 표시됨 플로팅 작업 호출?

+0

어디에서 'showSnackBar'를 호출 했습니까? – Sid

답변

0

Snackbar가 view에 연결할 수 없기 때문에 예외가 발생합니다. 정말 무슨 일이 일어나고 있는지 세부

더 많은 Snackbarnull 것 같다하고 예외를 발생시킨다 viewGroupgetContext()를 호출된다는 것이다.

p.s. 링크가 View.getContext()을 가리키고 있지만 ViewGroupView에서 상속됨에 따라 괜찮습니다.