2016-06-01 54 views
0

我有一个弹出窗口,其中包含2个文本视图。设置onClickListner在弹出窗口中的项目android

如果用户点击一个文本视图吐司必须出现。我代码为这个功能,但显示Nullpointer exceptionfar.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) rootView.findViewById(R.id.fartext); 
+0

哦,我错过了那个。这个工程。谢谢:) – tenten

+0

总是wc @tenten。 –

2

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

你得到了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

的问题是您正在寻找在rootView其中fareText不存在。你应该看看膨胀的布局。检查下面的代码。

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(); 

      } 
     }); 
    } 
});