安卓Button控件OnClickListener的三种实现方式

来源:互联网 发布:怎样写淘宝客招募 编辑:程序博客网 时间:2024/05/17 16:03

        学习过一些Button控件的使用方法,对OnClickListener事件的定义方式有所不同,下面来总结一下该事件的三种使用方式:在xml文件中定义事件;在Actitivy中实例化一个事件;Activity实现该事件的接口。三种Button点击事件的实现,各有利弊,读者可以根据情况选择合理的使用方式。

1. 在xml文件中定义事件,这种方式适用于指定的Button控件,代码比较简洁。

xml文件:
<Button android:text="按钮" 
   android:id="@+id/button"     
   android:layout_width="fill_parent" 
   android:layout_height="wrap_content" 
   android:onClick="buttonClick"
</Button>

Activity类:

public void buttonClick(View v){ 
    Intent intent = new Intent(mainActivity.this, otherActivity.class); 
    intent.putExtra("string", "info"); 
    startActivity(intent); 
}

2. 在Actitivy中实例化一个事件,该方法如果和第一种方法同时使用的话,则优先执行第一种方法。

xml文件:

<Button android:text="按钮" 
    android:id="@+id/button" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
</Button>

Activity类:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Button button=(Button) findViewById(R.id.button);
   button.setOnClickListener(new OnClickListener(){ 
        @Override 
        public void onClick(View v) { 
            Intent intent = new Intent(mainActivity.this, otherActivity.class); 
            intent.putExtra("string", "info"); 
            startActivity(intent);           
        }        
    }); 
}

这种方式使用起来比较方便,但是效率很低,尤其是写在ListView的适配器的getView方法中,需要创建多个事件对象,代码臃肿,浪费资源。解决办法如下。

xml文件:

<Button android:text="按钮" 
    android:id="@+id/button" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
</Button>

Activity类:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Button button=(Button) findViewById(R.id.button);
    button.setOnClickListener(listener);

OnClickListener listener=new OnClickListener(){ 
        @Override 
        public void onClick(View v) { 
            Intent intent = new Intent(mainActivity.this, otherActivity.class); 
            intent.putExtra("string", "info"); 
            startActivity(intent);           
        }        
    });

需要有多个Button的点击事件的时候代码如下。

xml文件:

<Button android:text="按钮1" 
    android:id="@+id/button1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
</Button>

<Button android:text="按钮2"
  android:id="@+id/button2" 
  android:layout_width="fill_parent" 
  android:layout_height="wrap_content" 
</Button>

Activity类:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
   Button button=(Button) findViewById(R.id.button);
   button.setOnClickListener(listener); 

OnClickListener listener= new OnClickListener(){ 
  switch (v.getId()) { 
        case R.id.button1: 
               Intent intent = new Intent(mainActivity.this, otherActivity.class);
               intent.putExtra("string1", "info1"); 
               startActivity(intent);   
               break;           
       case R.id.button2: 
               Intent intent = new Intent(mainActivity.this, otherActivity1.class);
               intent.putExtra("string2", "info2"); 
               startActivity(intent);   
               break;  
        }
  } 
};


3.Activity实现该事件的接口,这是比较常用的一种使用方式,能够使同一个Activity使用一个相同点击事件,完成相应的操作。

xml文件:

<Button android:text="按钮1" 
    android:id="@+id/button1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
</Button>

<Button android:text="按钮2"
 android:id="@+id/button2" 
  android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
</Button> 

Activity类:
public class mainActivity extends Activity implements OnClickListener{ 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        findViewById(R.id.button1).setOnClickListener(this); 
        findViewById(R.id.button2).setOnClickListener(this); 
    } 
    public void onClick(View v) { 
        switch (v.getId()) { 
            case R.id.button1: 
                Intent intent = new Intent(mainActivity.this, otherActivity.class);
                intent.putExtra("string1", "info1"); 
                startActivity(intent);   
                break;           
            case R.id.button2: 
                Intent intent = new Intent(mainActivity.this, otherActivity1.class);
                intent.putExtra("string2", "info2"); 
                startActivity(intent);   
                break;  
        } 
    } 
}

 

 

 

0 0
原创粉丝点击