【问题标题】:button in fragment not working when clicked单击时片段中的按钮不起作用
【发布时间】:2014-09-22 06:56:09
【问题描述】:

我在片段中有一个按钮,对于那个按钮,我重写了 onClick() 方法,但它不起作用。 单击按钮时,我也有一个 Taost 和一个日志。

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

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

【问题讨论】:

  • 使用tv.setOnClickListener(this);。片段实现OnClickListener。在片段附加到活动后也使用getActivity()。

标签: java android android-fragments


【解决方案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();

因为您确实在片段附加到活动之前启动了它。

【讨论】:

  • 为什么它写了Activity activity=getActivity(); 后不起作用
  • @RaghavendraShivhare 乐于助人,尽情享受。
【解决方案2】:

您正在片段中创建视图,但将点击监听器绑定到活动。 tv.setOnClickListener(this); 因为 Fragment 是覆盖 onClick 侦听器而不是活动的一个 tat

【讨论】:

  • 片段类正在实现接口OnClickListener
【解决方案3】:

你可以这样做: tv.setOnClickListener(getActivity);

【讨论】:

    【解决方案4】:

    这是您在 setOnClickListener 中的上下文的问题,您需要提供您的活动上下文才能正常工作。

    setOnClickListener(getActivity); 会将活动上下文传递给 onclicklistner。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-05
      • 2020-06-16
      • 2014-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多