如下代码,onCreate是一个函数,onClick也是一个函数,两者本来是毫无关系的,为什么要嵌套在一起呢? 如果onClick里面的代码很长很复杂,整个onCreate函数也会很长,很古怪。程序代码不仅是给机器处理的,也是给人看的。难道android的设计者们觉得这样的代码风格很好? 为什么不把onClick移到外面,两个函数的代码互不干扰?private Button button1;public void onCreate(Bundle savedInstanceSate)
{
//... ... 其他代码 button1.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v)
{
//... ...
}
});
}
{
//... ... 其他代码 button1.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v)
{
//... ...
}
});
}
解决方案 »
- android左右滑动功能。。。。急求
- NDK里打开/dev/graphics/fb0问题
- 紧急求助,Ksoap2出错
- xml文件怎么那么多android标记
- 如何计算textview 可以存放多少个字符,多少行?
- android打败iphone只要一句话
- android 开发
- 求大神帮忙看下 handler 出错 ,看不懂出错信息 是不是空指针
- 为什么升级Android studio 3.0之后,打包后的apk都是安装失败
- 安卓小白:AndroidManipulatefest里面的处理两个“android:name”
- Android 程序内部的一个线程怎样与两个Activity界面通信!最好给出例子
- 关于APK验证问题
然后在重写 onClick函数 通过 v.getid()匹配id 进行判断操作
这说明,你看android代码比较少。如果多了话,就该知道有很多种写法了。
......在onCreate()之外写一个listener就OK了
通过这样设置监听器比较常见,这是JAVA本身的机制,如果处理的代码比较多,可以把处理的代码封装到一个函数,甚至封装到一个对象里:
private Button button1;public void onCreate(Bundle savedInstanceSate)
{
//... ... 其他代码button1.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v)
{
handleButton1Click();
}
});
}private void handleButton1Click(){
..........
}
btn1.setOnClickListener(this);然后在实现方法里判断
if(view == btn1){
}
else if(view == btn2)
{
|
class btnOnClickListener implements OnClickListener { public void onClick(View v)
{
}
}在oncreate 里设置监听
button1.setOnClickListener(new btnOnClickListener());
{
//... ... 其他代码button1.setOnClickListener(onMyClickListener);
}private View.OnClickListener onMyClickListener= new View.OnClickListener() {
@Override
public void onClick(View v) {
//......
}
};
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.safe_main);
button1 = findViewByid(R.id.xx);
button1.setOnClickListener(listenter);
}
private final View.OnClickListener listenter = new View.OnClickListener() {
public void onClick(View view) {
if(view==button1){
处理事件.....
}else if(view==otherButton){
}
}
private Button button1;public void onCreate(Bundle savedInstanceSate)
{
//... ... 其他代码 button1.setOnClickListener(new OnclickEven ())
}
public class OnclickEven implements OnClickListener{ public void onClick(View v) {
// TODO Auto-generated method stub
do some thing;
}
}
}
就是这样,还有你的那个写法,还有楼上的好多都可以啊,代码如果多的话就可以这样写到外面,其实想怎么写还不是随你高兴!
2、可以自己写一个button1Click()方法,把点击后要实现的内容写在这个里面,然后在onCreate方法中的onClick方法中调用自己的写的这个方法。
3、可以在该Activity调用的xml文件中,给这个控件设置onClick属性,该属性中的值就是该控件被点击后会调用的方法是名称。不过在你的Activity中写这个方法的时候,必须要设置一个View的参数,该参数就表示这个控件。