2016-06-01 4 views
0

2 개의 텍스트보기가 포함 된 팝업 창이 있습니다.android의 팝업 창의 항목에 onClickListner 설정

사용자가 하나의 텍스트보기를 클릭하면 토스트가 나타나야합니다.이 기능을 위해 코딩되었지만 Nullpointer exception 줄에 far.setOnClickListener(new OnClickListener() {을 표시하십시오.

내 코드 :

btn_a.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      LayoutInflater lInflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      View popup_view = lInflater.inflate(R.layout.popup_a, null); 
      final PopupWindow popup = new PopupWindow(popup_view,200,75,true); 
      popup.setFocusable(true); 
      popup.setBackgroundDrawable(new ColorDrawable()); 
      popup.showAsDropDown(btn_a, 0,0); 

      TextView far = (TextView) rootView.findViewById(R.id.fartext); 
      far.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        Toast.makeText(getActivity(), "Clicked Far", Toast.LENGTH_SHORT).show(); 

       } 
      }); 
     } 
    }); 

답변

4

변경

TextView far = (TextView) popup_view.findViewById(R.id.fartext); 

대신

TextView far = (TextView) rootView.findViewById(R.id.fartext); 
+0

오, 그리워요. 작동합니다. 감사합니다. – tenten

+0

항상 wc @tenten입니다. –

2

이 줄 당신이보기에 클릭 리스너를 설정하려고하기 때문에 당신은 NullPointerException를 얻을 수 이는 실제로 popup_view의 일부이며 rootView가 아닙니다. 이처럼 수정 :

TextView far = (TextView) popup_view.findViewById(R.id.fartext); 
      far.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        Toast.makeText(getActivity(), "Clicked Far", Toast.LENGTH_SHORT).show(); 

       } 
      }); 
2

문제입니다 fareText이 존재하지 않습니다 어디가 rootView에서 찾고있다. 팽창 된 레이아웃을 조사해야합니다. 아래 코드를 확인하십시오.

btn_a.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     LayoutInflater lInflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View popup_view = lInflater.inflate(R.layout.popup_a, null); 
     final PopupWindow popup = new PopupWindow(popup_view,200,75,true); 
     popup.setFocusable(true); 
     popup.setBackgroundDrawable(new ColorDrawable()); 
     popup.showAsDropDown(btn_a, 0,0); 

     TextView far = (TextView) popup_view.findViewById(R.id.fartext); 
     far.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       Toast.makeText(getActivity(), "Clicked Far", Toast.LENGTH_SHORT).show(); 

      } 
     }); 
    } 
});