解决自定义控件中两个Button设置onClick()发生冲突的方法
来源:互联网 发布:广东粤数大数据 编辑:程序博客网 时间:2024/04/27 03:28
当我们自定义组合控件时会发现,在布局文件中同时给两个或者两个以上Button同时设置onClick属性,然后设置不同方法去实现的时候会发生错误,如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <Button android:id="@+id/bt_sub" android:onClick="subClicked" android:background="@drawable/sub" android:layout_width="50dp" android:layout_height="50dp"/> <EditText android:id="@+id/et_num" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="1" /> <Button android:id="@+id/bt_add" android:onClick="addClicked" android:background="@drawable/add" android:layout_width="50dp" android:layout_height="50dp"/></LinearLayout>
其中有连个点击事件,对应的两个方法subClick和addclick,虽然显示布局上不会有问题,但是,当我们调用的时候却会出现问题,
这个时候,有两种解决方案,
方案一、
通过给两个button定义两个id属性,然后在代码中分别给两个button指定点击方法,然后分别执行相应操作:
private Button bt_sub;private EditText et_num;private Button bt_add;/** * 初始化函数 * @param context */public void initView(Context context){View.inflate(context, R.layout.stepper_item, MyStepper.this);bt_sub = (Button) findViewById(R.id.bt_sub);et_num = (EditText)findViewById(R.id.et_num);bt_add = (Button) findViewById(R.id.bt_add);bt_sub.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {// TODO 自动生成的方法存根int num = Integer.parseInt(et_num.getText().toString().trim());num--;if(num<=0){et_num.setText("0");}else{et_num.setText(""+num);}}});bt_add.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {// TODO 自动生成的方法存根int num = Integer.parseInt(et_num.getText().toString().trim());num++;et_num.setText(""+num);//et_num.setText(""+Integer.parseInt(et_num.getText().toString().trim()));}});
方案二、让自定义组合控件继承事件监听方法,然后分别设置点击方法:
public class MyStepper extends RelativeLayout implements OnClickListener{private Button bt_sub;private EditText et_num;private Button bt_add;/** * 初始化函数 * @param context */public void initView(Context context){View.inflate(context, R.layout.stepper_item, MyStepper.this);bt_sub = (Button) findViewById(R.id.bt_sub);et_num = (EditText)findViewById(R.id.et_num);bt_add = (Button) findViewById(R.id.bt_add);bt_sub.setOnClickListener(this);bt_add.setOnClickListener(this);}/** * 要设置样式的时候使用 * @param context * @param attrs * @param defStyleAttr */public MyStepper(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);// TODO 自动生成的构造函数存根initView(context);}/** * 在布局文件中实例化时使用 * @param context * @param attrs */public MyStepper(Context context, AttributeSet attrs) {super(context, attrs);// TODO 自动生成的构造函数存根initView(context);}/** * 在代码中实例化调用时使用 * @param context * @param attrs */public MyStepper(Context context) {super(context);// TODO 自动生成的构造函数存根initView(context);}/** * 获取数值 * @return */public int getNumber(){return Integer.parseInt(et_num.getText().toString().trim());}@Overridepublic void onClick(View v) {int num = 0;switch(v.getId()){case R.id.bt_add://点击加的按钮num = Integer.parseInt(et_num.getText().toString().trim());num++;et_num.setText(""+num);break;case R.id.bt_sub://点击减按钮num = Integer.parseInt(et_num.getText().toString().trim());num--;if(num<=0){et_num.setText("0");}else{et_num.setText(""+num);}break;}}}
0 0
- 解决自定义控件中两个Button设置onClick()发生冲突的方法
- Android中Button的onClick实现方法。
- Android中onTouch方法的执行过程以及和onClick执行发生冲突的解决办法
- Android中onTouch方法的执行过程以及和onClick执行发生冲突的解决办法
- 【Android】Button控件的三种onClick方法
- Button跳转到指定的方法(onclick)
- android 自定义组合控件总结(两个Button点击切换)
- iOS小技巧 - 调换按钮中文字与图标的位置(自定义button,重写两个方法)
- datalist中设置按钮控件的onclick事件
- ListView控件的onItemClick事件和item中Button的onClick事件冲突的解决办法
- JavaScript的ready方法中获取某元素(如获取某个button,并设置onclick事件)的疑问?为什么要写在ready方法里,不用ready方法可以吗?
- android自定义控件,动态设置Button的样式
- android自定义控件,动态设置Button的样式
- android自定义控件,动态设置Button的样式
- android自定义控件,动态设置Button的样式
- android自定义控件,动态设置Button的样式
- Android 中控件(如Button)设置drawableLeft方法
- Android 中控件(如Button)设置drawableLeft方法
- JVM学习之:GC的算法简述
- 入门Android开发--笔记--单例原理
- python爬虫爬取涂鸦吧照片
- 连接池
- Spring读书笔记-----使用Spring容器(二)
- 解决自定义控件中两个Button设置onClick()发生冲突的方法
- 南阳题目915-+-字符串
- Python进阶---函数式编程简介
- Unity中使用ulua的个人经验总结
- 4.14
- 【慕课笔记】4-7 应用DOM4J及JDOM方式解析XML—应用DOM4J解析节点属性
- Spring读书笔记-----Spring的Bean之Bean的基本概念
- 清除JAVA 项目中的注释
- c#使用wpd读取便携式设备信息二