为android中的弹出窗口中的项设置onClickListner

时间:2016-06-01 04:18:08

标签: android onclick android-popupwindow

我有一个包含2个文本视图的弹出窗口。

如果用户点击一个文字视图吐司必须出现。我为此功能编码,但在行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();

                }
            });
        }
    });

3 个答案:

答案 0 :(得分:4)

更改此行

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

而不是

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

答案 1 :(得分: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 :(得分: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();

            }
        });
    }
});