单击时片段中的按钮不起作用

时间:2014-09-22 06:56:09

标签: java android android-fragments

我在片段中有一个按钮,对于那个按钮,我有覆盖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();
}
}

为什么它的发生,我不知道,可能是它的愚蠢错误。 现在吐司显示错误,接受上下文对象所以我提供了活动,而不是工作。

4 个答案:

答案 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。