我在片段中有一个按钮,对于那个按钮,我有覆盖onClick()方法,但它不起作用。 当点击按钮时,我也有一个Taost和一个Log。
public class DataShown extends Fragment implements OnClickListener{
Button tv;
TextView textview;
Activity activity=getActivity();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.d("3", "started");
View rootView = inflater.inflate(R.layout.datashown, container, false);
Log.d("3", "closed");
textview=(TextView) rootView.findViewById(R.id.textView1);
tv = (Button) rootView.findViewById(R.id.configButton);
tv.setOnClickListener((OnClickListener) activity);
return rootView;
}//onCtreate
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Log.d("onClick","1");
Toast.makeText(activity, "on click", Toast.LENGTH_SHORT).show();
}
}
为什么它的发生,我不知道,可能是它的愚蠢错误。 现在吐司显示错误,接受上下文对象所以我提供了活动,而不是工作。
答案 0 :(得分:1)
您正在片段中创建视图,但将点击侦听器绑定到活动。
tv.setOnClickListener(this);
因为片段是覆盖onClick侦听器的而不是活动
答案 1 :(得分:1)
更改
tv.setOnClickListener((OnClickListener) activity);
到
tv.setOnClickListener(this);
并在onClick
方法更改
Toast.makeText(activity, "on click", Toast.LENGTH_SHORT).show();
到
Toast.makeText(getActivity(), "on click", Toast.LENGTH_SHORT).show();
并删除
Activity activity=getActivity();
因为您确实在片段附加到活动之前启动了它。
答案 2 :(得分:0)
Yon可以这样做: tv.setOnClickListener(getActivity);
答案 3 :(得分:0)
这是setOnClickListener
中您的上下文存在的问题,您需要让您的行动背景能够正常运作。
setOnClickListener(getActivity);
会将actvities上下文传递给onclicklistner。