我有一个包含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();
}
});
}
});
答案 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();
}
});
}
});