Android 处理 Button 单击事件的三种方法

方法一:在XML文件中指定 单击事件函数 


<Button 
            android:id="@+id/button1" 
            android:layout_width="120dip" 
            android:layout_height="wrap_content" 
            android:layout_alignParentLeft="true" 
            android:layout_below="@+id/textView1" 
            android:layout_marginTop="59dp" 
            android:onClick="onclicklistener" 
            android:text="@string/mybuttonstr" /> 

然后在代码中实现这个函数。注意,函数需要public 要不会异常。 

public void onclicklistener(View tager) 
    { 
        Log.v("MyTag", "onClick"); 
    } 



方法二: 

在activity 的onCreate 中 找到button,然后给它赋上事件监听器。这个方式非常普遍。 

public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        Button but=(Button)this.findViewById(id.button1); 
        
        
        but.setOnClickListener(new OnClickListener() { 
            
            public void onClick(View v) { 
                // TODO Auto-generated method stub 
                Log.v("MyTag", "onClick"); 
            } 
        }); 
    } 



方法三: 

这个方法其实是方法二的变种。就是提前定义一个OnClickListener 的handler,然后可以将这个activity中所有的button多使用这个handler,通过判断不同id来进行不同的逻辑。这个方式适合比较多的button的情况使用。 

public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        
        View.OnClickListener handler=new OnClickListener(){ 

            @Override 
            public void onClick(View v) { 
                // TODO Auto-generated method stub 
                switch (v.getId()){ 
                case id.button1: 
                    Log.v("MyTag", "Button1 OnClick"); 
                    break; 
                case id.button2: 
                    Log.v("MyTag", "Button2 OnClick"); 
                    break; 
                } 
                
            } 
            
        }; 
        
        Button btn1=(Button)this.findViewById(id.button1); 
        Button btn2=(Button)this.findViewById(id.button2); 
        
        btn1.setOnClickListener(handler); 
        btn2.setOnClickListener(handler); 

posted on 2012-05-11 17:38  无尽的思念  阅读(413)  评论(0)    收藏  举报

导航