android按钮点击事件事件

3482人阅读
Android SDK 2.0之后的版本提供了更简洁的方法,在Activity里创建一个public方法(记得设置View参数),然后在 Layout方法里直接设置。
逻辑和设计相比上边的简写和findViewById方法都更简单明了,更具可读性,也方便以后维护。
方式一:在配置中定义不同onClick事件方法
Activity中代码:
Java代码 &
public&void&myClickButton1(View&v){ &&&&&&Toast.makeText(this,&&Toast:Button_Test1&,&Toast.LENGTH_SHORT).show(); &&} &&&&public&void&myClickButton2(View&v){ &&&&&&Toast.makeText(this,&&Toast:Button_Test2&,&Toast.LENGTH_SHORT).show(); &&}&&
public void myClickButton1(View v){
Toast.makeText(this, &Toast:Button_Test1&, Toast.LENGTH_SHORT).show();
public void myClickButton2(View v){
Toast.makeText(this, &Toast:Button_Test2&, Toast.LENGTH_SHORT).show();
&在main.xml中配置内容如下:
&& &&&&&&android:id=&@+id/idButtonTest1&&&&&&&android:layout_width=&fill_parent&& &&&&&&android:layout_height=&wrap_content&& &&&&&&android:text=&@string/button_test1&&&&&&&android:onClick=&myClickButton1&&&&&&&&&&& &&&&&&android:id=&@+id/idButtonTest2&&&&&&&android:layout_width=&fill_parent&& &&&&&&android:layout_height=&wrap_content&& &&&&&&android:text=&@string/button_test2&&&&&&&android:onClick=&myClickButton2&&&&&&&&&
android:id=&@+id/idButtonTest1&
android:layout_width=&fill_parent&
android:layout_height=&wrap_content&
android:text=&@string/button_test1&
android:onClick=&myClickButton1&
android:id=&@+id/idButtonTest2&
android:layout_width=&fill_parent&
android:layout_height=&wrap_content&
android:text=&@string/button_test2&
android:onClick=&myClickButton2&
注意:main.xml中的配置android:onClick=&myClickButton1&和android:onClick=&myClickButton2&,如果熟悉JavaScript的朋友就会发现,这和JavaScript的onclick事件定义方法一模一样啊! :-)
方式二:在配置中定义相同的onClick事件方法,然后在onClick方法中根据不同的按钮执行不同的操作。
Activity中代码:
Java代码 &
public&void&myClickHandler(View&v){ &&&&&&int&id&=&v.getId(); &&&&&&switch(id){ &&&&&&&&&&case&R.id.idButtonTest1: &&&&&&&&&&&&&&Toast.makeText(demo2.this,&&Toast1:Button_Test1&,&Toast.LENGTH_SHORT).show(); &&&&&&&&&&&&&&break; &&&&&&&&&&case&R.id.idButtonTest2: &&&&&&&&&&&&&&Toast.makeText(demo2.this,&&Toast2:Button_Test2&,&Toast.LENGTH_SHORT).show(); &&&&&&&&&&&&&&break; &&&&&&&&&&default: &&&&&&&&&&&&&&Toast.makeText(demo2.this,&&Toast:none&,&Toast.LENGTH_SHORT).show(); &&&&&&} &&}&&
public void myClickHandler(View v){
int id = v.getId();
switch(id){
case R.id.idButtonTest1:
Toast.makeText(demo2.this, &Toast1:Button_Test1&, Toast.LENGTH_SHORT).show();
case R.id.idButtonTest2:
Toast.makeText(demo2.this, &Toast2:Button_Test2&, Toast.LENGTH_SHORT).show();
Toast.makeText(demo2.this, &Toast:none&, Toast.LENGTH_SHORT).show();
main.xml配置内容如下:
&& &&&&&&android:id=&@+id/idButtonTest1&&&&&&&android:layout_width=&fill_parent&& &&&&&&android:layout_height=&wrap_content&& &&&&&&android:text=&@string/button_test1&&&&&&&android:onClick=&myClickHandler&&&&&&&&&&& &&&&&&android:id=&@+id/idButtonTest2&&&&&&&android:layout_width=&fill_parent&& &&&&&&android:layout_height=&wrap_content&& &&&&&&android:text=&@string/button_test2&&&&&&&android:onClick=&myClickHandler&&&&&&&&&
android:id=&@+id/idButtonTest1&
android:layout_width=&fill_parent&
android:layout_height=&wrap_content&
android:text=&@string/button_test1&
android:onClick=&myClickHandler&
android:id=&@+id/idButtonTest2&
android:layout_width=&fill_parent&
android:layout_height=&wrap_content&
android:text=&@string/button_test2&
android:onClick=&myClickHandler&
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:171323次
积分:2382
积分:2382
排名:第8319名
原创:50篇
转载:92篇
评论:24条
(4)(2)(1)(4)(1)(6)(1)(1)(14)(8)(1)(17)(11)(2)(1)(13)(2)(1)(44)(4)(4)android中junit测试各种按钮事件 - Ant space - ITeye技术网站
博客分类:
public class CalculatorHitSomeButtons extends ActivityInstrumentationTestCase &Calculator&{
public boolean setup =
private static final String TAG = "CalculatorTests";
Calculator mActivity =
Instrumentation mInst =
public CalculatorHitSomeButtons() {
super("com.android.calculator2", Calculator.class);
protected void setUp() throws Exception {
super.setUp();
mActivity = getActivity();
mInst = getInstrumentation();
protected void tearDown() throws Exception {
super.tearDown();
@LargeTest
public void testPressSomeKeys() {
Log.v(TAG, "Pressing some keys!");
// Make sure that we clear the output
press(KeyEvent.KEYCODE_ENTER);
press(KeyEvent.KEYCODE_CLEAR);
// 3 + 4 * 5 =& 23
press(KeyEvent.KEYCODE_3);
press(KeyEvent.KEYCODE_PLUS);
press(KeyEvent.KEYCODE_4);
press(KeyEvent.KEYCODE_9 | KeyEvent.META_SHIFT_ON);
press(KeyEvent.KEYCODE_5);
press(KeyEvent.KEYCODE_ENTER);
assertEquals(displayVal(), "23");
@LargeTest
public void testTapSomeButtons() {
Log.v(TAG, "Tapping some buttons!");
// Make sure that we clear the output
tap(R.id.equal);
tap(R.id.del);
// 567 / 3 =& 189
tap(R.id.digit5);
tap(R.id.digit6);
tap(R.id.digit7);
tap(R.id.div);
tap(R.id.digit3);
tap(R.id.equal);
assertEquals(displayVal(), "189");
// make sure we can continue calculations also
// 189 - 789 =& -600
tap(R.id.minus);
tap(R.id.digit7);
tap(R.id.digit8);
tap(R.id.digit9);
tap(R.id.equal);
// Careful: the first digit in the expected value is \u2212, not "-" (a hyphen)
assertEquals(displayVal(), mActivity.getString(R.string.minus) + "600");
// helper functions
private void press(int keycode) {
mInst.sendKeyDownUpSync(keycode);
private boolean tap(int id) {
View view = mActivity.findViewById(id);
if(view != null) {
TouchUtils.clickView(this, view);
private String displayVal() {
CalculatorDisplay display = (CalculatorDisplay) mActivity.findViewById(R.id.display);
assertNotNull(display);
EditText box = (EditText) display.getCurrentView();
assertNotNull(box);
return box.getText().toString();
浏览: 313051 次
来自: 杭州
别的不多说,点个赞!
谢楼主!研究了好久,原来是这样!
粘帖的不错
Android_gqs 写道请问博主,Viewstub 可实现 ...
抄的什么啊,狗屁不通用心创造滤镜
扫码下载App
汇聚2000万达人的兴趣社区下载即送20张免费照片冲印
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
I want to live idle lives...
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
&然后是分别建立三个文件,第一个是main.class,第二个是SlipButton.class,第三个是 onchangeListener.class
main.class
import android.app.Aimport android.os.Bimport android.widget.T
public class Main extends Activity implements OnChangedListener {&&& /** Called when the activity is first created. */&&& @Override&&& public void onCreate(Bundle savedInstanceState) {&&&&&&& super.onCreate(savedInstanceState);&&&&&&& setContentView(R.layout.main);&&&&&&& &&&&&&& SlipButton myBtn =(SlipButton) findViewById(R.id.slipBtn);//获得指定控件&&&&&&& myBtn.SetOnChangedListener(this);//为控件设置监听器&&& }
&&&&&&& @Override&&&&&&& public void OnChanged(boolean CheckState) {//当按钮状态被改变时&&&&&&&&&&&&&&& // TODO Auto-generated method stub&&&&&&&&&&&&&&& if(CheckState)&&&&&&&&&&&&&&&&&&&&&&& Toast.makeText(this,"打开了..." , Toast.LENGTH_SHORT).show();&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&&&&&&&& Toast.makeText(this,"关闭了..." , Toast.LENGTH_SHORT).show();&&&&&&& }}
SlipButton.class
import android.content.Cimport android.graphics.Bimport android.graphics.BitmapFimport android.graphics.Cimport android.graphics.Mimport android.graphics.Pimport android.graphics.Rimport android.util.AttributeSimport android.view.MotionEimport android.view.Vimport android.view.View.OnTouchL
public class SlipButton extends View implements OnTouchListener{
&&&&&&& private boolean NowChoose =//记录当前按钮是否打开,true为打开,flase为关闭&&&&&&& private boolean OnSlip =//记录用户是否在滑动的变量&&&&&&& private float DownX,NowX;//按下时的x,当前的x,&&&&&&& private Rect Btn_On,Btn_O//打开和关闭状态下,游标的Rect&&&&&&& &&&&&&& private boolean isChgLsnOn =&&&&&&& private OnChangedListener ChgL&&&&&&& &&&&&&& private Bitmap bg_on,bg_off,slip_&&&&&&& &&&&&&& public SlipButton(Context context) {&&&&&&&&&&&&&&& super(context);&&&&&&&&&&&&&&& // TODO Auto-generated constructor stub&&&&&&&&&&&&&&& init();&&&&&&& }
&&&&&&& public SlipButton(Context context, AttributeSet attrs) {&&&&&&&&&&&&&&& super(context, attrs);&&&&&&&&&&&&&&& // TODO Auto-generated constructor stub&&&&&&&&&&&&&&& init();&&&&&&& }
&&&&&&& private void init(){//初始化&&&&&&&&&&&&&&& //载入图片资源&&&&&&&&&&&&&&& bg_on = BitmapFactory.decodeResource(getResources(), R.drawable.slip_bg_on);&&&&&&&&&&&&&&& bg_off = BitmapFactory.decodeResource(getResources(), R.drawable.slip_bg_off);&&&&&&&&&&&&&&& slip_btn = BitmapFactory.decodeResource(getResources(), R.drawable.slip_btn);&&&&&&&&&&&&&&& //获得需要的Rect数据&&&&&&&&&&&&&&& Btn_On = new Rect(0,0,slip_btn.getWidth(),slip_btn.getHeight());&&&&&&&&&&&&&&& Btn_Off = new Rect(&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& bg_off.getWidth()-slip_btn.getWidth(),&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 0,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& bg_off.getWidth(),&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& slip_btn.getHeight());&&&&&&&&&&&&&&& setOnTouchListener(this);//设置监听器,也可以直接复写OnTouchEvent&&&&&&& }&&&&&&& &&&&&&& @Override&&&&&&& protected void onDraw(Canvas canvas) {//绘图函数&&&&&&&&&&&&&&& // TODO Auto-generated method stub&&&&&&&&&&&&&&& super.onDraw(canvas);&&&&&&&&&&&&&&& Matrix matrix = new Matrix();&&&&&&&&&&&&&&& Paint paint = new Paint();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& if(NowX&(bg_on.getWidth()/2))//滑动到前半段与后半段的背景不同,在此做判断&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& canvas.drawBitmap(bg_off,matrix, paint);//画出关闭时的背景&&&&&&&&&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& canvas.drawBitmap(bg_on,matrix, paint);//画出打开时的背景&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&& if(OnSlip)//是否是在滑动状态,&&&&&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& if(NowX &= bg_on.getWidth())//是否划出指定范围,不能让游标跑到外头,必须做这个判断&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& x = bg_on.getWidth()-slip_btn.getWidth()/2;//减去游标1/2的长度...&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& x = NowX - slip_btn.getWidth()/2;&&&&&&&&&&&&&&&&&&&&&&& }else{//非滑动状态&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& if(NowChoose)//根据现在的开关状态设置画游标的位置&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& x = Btn_Off.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& x = Btn_On.&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&& if(x&0)//对游标位置进行异常判断...&&&&&&&&&&&&&&&&&&&&&&& x = 0;&&&&&&&&&&&&&&& else if(x&bg_on.getWidth()-slip_btn.getWidth())&&&&&&&&&&&&&&&&&&&&&&& x = bg_on.getWidth()-slip_btn.getWidth();&&&&&&&&&&&&&&& canvas.drawBitmap(slip_btn,x, 0, paint);//画出游标.&&&&&&&&&&&&&&& }&&&&&&& }
&&&&&&& @Override&&&&&&& public boolean onTouch(View v, MotionEvent event) {&&&&&&&&&&&&&&& // TODO Auto-generated method stub&&&&&&&&&&&&&&& switch(event.getAction())//根据动作来执行代码&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&& case MotionEvent.ACTION_MOVE://滑动&&&&&&&&&&&&&&&&&&&&&&& NowX = event.getX();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& case MotionEvent.ACTION_DOWN://按下&&&&&&&&&&&&&&& if(event.getX()&bg_on.getWidth()||event.getY()&bg_on.getHeight())&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& OnSlip =&&&&&&&&&&&&&&&&&&&&&&& DownX = event.getX();&&&&&&&&&&&&&&&&&&&&&&& NowX = DownX;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& case MotionEvent.ACTION_UP://松开&&&&&&&&&&&&&&&&&&&&&&& OnSlip =&&&&&&&&&&&&&&&&&&&&&&& boolean LastChoose = NowC&&&&&&&&&&&&&&&&&&&&&&& if(event.getX()&=(bg_on.getWidth()/2))&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& NowChoose =&&&&&&&&&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& NowChoose =&&&&&&&&&&&&&&&&&&&&&&& if(isChgLsnOn&&(LastChoose!=NowChoose))//如果设置了监听器,就调用其方法..&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ChgLsn.OnChanged(NowChoose);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& default:&&&&&&&&&&&&&&& &&&&&&&&&&&&&&& }&&&&&&&&&&&&&&& invalidate();//重画控件&&&&&&&&&&&&&&&&&&&&&& }&&&&&&& &&&&&&& public void SetOnChangedListener(OnChangedListener l){//设置监听器,当状态修改的时候&&&&&&&&&&&&&&& isChgLsnOn =&&&&&&&&&&&&&&& ChgLsn =&&&&&&& }&&&&&&& }
onchangeListener.class
package CMD100.demo.slipB
public interface OnChangedListener {&&&&&&& abstract void OnChanged(boolean CheckState);}
main.xml代码
&?xml version="1.0" encoding="utf-8"?&&LinearLayout xmlns:android=""&&& android:orientation="vertical"&&& android:layout_width="fill_parent"&&& android:layout_height="fill_parent"&&& &&TextView& &&& android:layout_width="fill_parent" &&& android:layout_height="wrap_content" &&& android:text="@string/hello"&&& /&&LinearLayout&&&&&&& android:orientation = "horizontal"&&&&&&& android:layout_width = "fill_parent"&&&&&&& android:layout_height = "wrap_content"&&&&&&& android:background = "#ff0000"&&&&&&& &&&&&&&& &TextView&&&&&&&&&&&&&&& android:text = "测试:"&&&&&&&&&&&&&&& android:layout_width = "wrap_content"&&&&&&&&&&&&&&& android:layout_height = "wrap_content"&&&&&&&&&&&&&&& /&&&& &CMD100.demo.slipButton.SlipButton&&&&&&&&&&&&&&& android:id = "@+id/slipBtn"&&&&&&&&&&&&&&& android:layout_width="wrap_content" &&&&&&&&&&& android:layout_height="wrap_content"&&&&&&&&&&& android:layout_marginLeft = "10sp" &&&&&&& /&&&&&&&& &/LinearLayout&&/LinearLayout&
注意:在xml里头要放置的位置
&[包名].SlipButton&&&&&&& android:id = "@+id/slipBtn"&&&&&&& android:layout_width="wrap_content" &&&&&&& android:layout_height="wrap_content"&&&&&&& /&
然后可以像其他控件一样使用了...
SlipButton myBtn =(SlipButton) findViewById(R.id.slipBtn);myBtn.SetOnChangedListener(...);
代码到这里就全部完成了。
阅读(880)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'android滑动按钮事件',
blogAbstract:'转自;
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}在平时学习安卓的过程中,不论是看视频还是看博客,我每个人对代码的写法都有不同的偏好,比较明显的就是对控件响应事件的写法的不同。所以我想把这些写法总结一下,比较下各种写法的优劣,希望可以让自己可以灵活地选择方式。
  xml文件
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button1" /&
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button2" /&
匿名内部类
TestButtonActivity extends Activity {
Button btn1, btn2;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test_button);
btn1 = (Button) findViewById(R.id.button1);
btn2 = (Button) findViewById(R.id.button2);
btn1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Toast tst = Toast.makeText(TestButtonActivity.this, "", Toast.LENGTH_SHORT);
tst.show();
btn2.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Toast tst = Toast.makeText(TestButtonActivity.this, "", Toast.LENGTH_SHORT);
tst.show();
单击事件类
1 public class TestButtonActivity extends Activity {
Button btn1, btn2;
class MyClickListener implements OnClickListener {
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.button1:
tst = Toast.makeText(TestButtonActivity.this, "", Toast.LENGTH_SHORT);
tst.show();
case R.id.button2:
tst = Toast.makeText(TestButtonActivity.this, "", Toast.LENGTH_SHORT);
tst.show();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test_button);
btn1 = (Button) findViewById(R.id.button1);
btn2 = (Button) findViewById(R.id.button2);
btn1.setOnClickListener(new MyClickListener());
btn2.setOnClickListener(new MyClickListener());
Activity继承View.OnClickListener,由Activity实现OnClick(View view)方法,在OnClick(View view)方法中用switch-case对不同id代表的button进行相应的处理
1 public class TestButtonActivity extends Activity implements OnClickListener {
Button btn1, btn2;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test_button);
btn1 = (Button) findViewById(R.id.button1);
btn2 = (Button) findViewById(R.id.button2);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.button1:
tst = Toast.makeText(this, "", Toast.LENGTH_SHORT);
tst.show();
case R.id.button2:
tst = Toast.makeText(this, "", Toast.LENGTH_SHORT);
tst.show();
最后一种是我今天看到的一种写法,在文件中&显示指定按钮的onClick属性,这样点击按钮时会利用反射的方式调用对应Activity中的click()方法&[注1]
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="Button1" /&
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="Button2" /&
这里在输完android:的时候按下 Alt+/ 会有 onClick 属性的提示, 但输入到 android:onClick=& 的地方按下 Alt+/ 并没有提示 onClick 选项,让我突然觉得这里好像有点问题。
1 public class TestButtonActivity extends Activity {
Button btn1, btn2;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test_button);
// 注意 这里没有 @Override 标签
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.button1:
tst = Toast.makeText(this, "", Toast.LENGTH_SHORT);
tst.show();
case R.id.button2:
tst = Toast.makeText(this, "", Toast.LENGTH_SHORT);
tst.show();
这种写法整个代码中都不用声明button就可以实现button的单击事件。
以上就是四种实现按钮单击事件的方法。
粗略总结一下,就是按钮少的时候用匿名内部类会比较快,比如写demo测试的时候或者登陆界面之类的。
按钮多的情况我还是选择第,方便。
关于第四种方法,我感觉最方便,但看了很多代码还是觉得写法挺小众,不知为什么,这一点还需要我多研究。
[注1]这段话引用自Android - Button(按钮)的响应点击事件的4种写法
其中他所说的
1 public void click(View v){
方法我试了下,运行时会报错。建议用我上面的示例代码。时间仓促,也没来得及细看出错原因,等有空再看一看。编程开发子分类}

我要回帖

更多关于 android按钮点击事件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信