onclick事件的定义方法,分为三种,分别为在xml中进行指定方法;在Actitivy中new出一个OnClickListenner();实现OnClickListener接口三种方式。
代码分别如下:
1. xml指定onclick事件,这种方式比较适用于指定的button,能使java代码相对简化一些:
xml文件中:
- <</span>Button
android:text="Button03" -
android:id="@+id/Button03" -
android:layout_width="wrap_content" -
android:layout_height="wrap_content" -
<</span>span style="color:#FF0000;">android:onClick="Btn3OnClick"</</span>span>> - </</span>Button>
红色部分指定响应的方法名!
Activity中定义方法:
- public
void Btn3OnClick(View view){ -
Intent intent = new Intent(mainActivity. this,fristActivity. class); -
intent.putExtra("data", "mainActivity"); -
startActivity(intent); -
}
2. 在onCreate方法中为button指定绑定操作,以下方法中,xml里如果同时指定了事件的执行方法,则优先执行xml中的内容。
- protected
void onCreate(Bundle savedInstanceState) { -
super.onCreate(savedInstanceState); -
setContentView(R.layout.main); -
findViewById(R.id.Button03).setOnClickListener(new OnClickListener(){ -
@Override -
public void onClick(View v) { -
Intent intent = new Intent(mainActivity. this,fristActivity. class); -
intent.putExtra("data", "mainActivity"); -
startActivity(intent); -
} -
}); -
}
此种方式会使代码看上去比较直观,但是效率不高,特别是写在listView的适配器中getView时,new出多个对象,占用资源。优化版的写法如下,将点击对象提出来如下:
- protected
void onCreate(Bundle savedInstanceState) { -
super.onCreate(savedInstanceState); -
setContentView(R.layout.main); -
findViewById(R.id.Button03).setOnClickListener(onclick); -
}
-
OnClickListener
onclick = new OnClickListener(){ -
@Override -
public void onClick(View v) { -
Intent intent = new Intent(mainActivity. this,fristActivity. class); -
intent.putExtra("data", "mainActivity"); -
startActivity(intent); -
} -
};
3. 实现OnClickListener接口,这种方式使用量比较多,能解决同一个activity中所有的onclick问题。
- public
class mainActivity extendsActivity implementsOnClickListener{ -
protected void onCreate(Bundle savedInstanceState) { -
super.onCreate(savedInstanceState); -
setContentView(R.layout.main); -
findViewById(R.id.Button02).setOnClickListener(this); -
findViewById(R.id.Button03).setOnClickListener(this); -
} -
public void onClick(View view) { -
switch (v.getId()) { -
case R.id.Button03: -
Intent intent = new Intent(mainActivity. this,fristActivity. class); -
intent.putExtra("data", "mainActivity"); -
startActivity(intent); -
break; -
case R.id.Button02: -
Intent intent = new Intent(mainActivity. this,loginActivity. class); -
intent.putExtra("data", "mainActivity"); -
startActivity(intent); -
break; -
default: -
break; -
} -
} -
…… -
}
这三种方式都能实现点击事件的处理,可根据使用环境,分析哪种比较适合!