19

我有一个正在现代化的应用程序。此过程的一个步骤是更改为基于片段的布局(使用支持库中的片段)。我将我的活动转换为片段,并且布局运行良好(使用 ViewPager,很酷的东西!)

我让我的活动实现 OnClickListener 来满足我所有的按钮按下需求。当然,我有新的 Fragment 化身做同样的事情,但看起来“onClick”永远不会受到打击。Fragments 是否有什么特别之处阻止它们以这种方式工作?

4

4 回答 4

46

只做一个

public class fragmentOne extends Fragment implements OnClickListener {
    Button myButton;

    @Override
    public View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedinstanceState) {
        View myView = inflater.inflate(R.layout.fragment_1, container, false);
        myButton = (Button) myView.findViewById(R.id.myButton);
        myButton.setOnClickListener(this);
        return myView;
    }

    @Override
    public void onClick(View v) {
        // implements your things
    }
}

很简单

于 2013-02-19T06:31:33.367 回答
14

我将重点使用 OnClick 操作进行全局访问,您必须这样做是您的项目,必须实现View.OnClickListener,然后覆盖方法 OnClick(),在OnCreateView()中必须这样做button_submit.setOnClickListener(这个); 对于您需要的视图,请参阅下面的代码以获得明确的答案,谢谢。

public class New_Project extends Fragment implements View.OnClickListener{
private View mView;
private Button button_submit;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    mView = inflater.inflate(R.layout.fragment_newproject, container,false);
    button_submit=(Button)mView.findViewById(R.id.button_submit);
    button_submit.setOnClickListener(this);
    return mView;
}

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.button_submit:
            //do your stuff
            break;
    }
}

}

于 2015-04-20T07:08:32.980 回答
2

我想评论 Abhijit Chakra 的答案,但似乎我需要 50 次代表。对于那些想知道您是否不能使用 Abhijit 答案的人,这是因为:

public void OnClick(View v) {
    // implements your things
}

您需要确保它是 onClick,而不是 OnClick。谢天谢地,Android Studio 内部错误消息来救援。

于 2015-03-27T08:20:40.517 回答
2
view.setOnLongClickListener(new View.OnLongClickListener() {
  @Override
  public boolean onLongClick(View v) {
    switch (v.getId()) {
      case R.id.imgView1:
        Toast.makeText(getActivity(), "Long pressing", Toast.LENGTH_SHORT).show();
        updateImage();
        break;
      case R.id.imgView2:
        Toast.makeText(getActivity(), "Long pressing", Toast.LENGTH_SHORT).show();
        updateImage();
        break;
      case R.id.imgView3:
        Toast.makeText(getActivity(), "Long pressing", Toast.LENGTH_SHORT).show();
        updateImage();
        break;
      default:
        break;
    }
于 2017-08-12T07:02:03.890 回答