片段实现OnClickListener

时间:2012-08-08 02:55:05

标签: android android-fragments onclicklistener

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

我正在让我的活动实现OnClickListener,以满足我所有的按键需求。我有新的Fragment化身当然做同样的事情,但看起来“onClick”永远不会被击中。片段有什么特别之处可以防止它们以这种方式工作吗?

3 个答案:

答案 0 :(得分:40)

只做一个

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
    }
}

非常简单

答案 1 :(得分:10)

  

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

public class New_Project extends Fragment implements View.OnClickListener{

                private View mView;
                private EditText edttxt_projectname;
                private Button button_submit;

                @Override
                public View onCreateView(LayoutInflater inflater, ViewGroup container,
                        Bundle savedInstanceState) {

                    mView = inflater.inflate(R.layout.fragment_newproject, container,false);
                    edttxt_projectname=(EditText)mView.findViewById(R.id.edttxt_projectname);
                    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:
                        edttxt_projectname.setText("Test Submit!#@%!#%");
                        break;
                default:
                        break;
                    }

                }
    }

答案 2 :(得分:2)

我想评论一下Abhijit Chakra的答案,但似乎我需要有50个代表。对于那些想知道你是否能够使用Abhijit的答案的人来说,原因是:

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

您需要确保它是onClick,而不是OnClick。值得庆幸的是Android Studio内部错误消息来拯救。