Android响应按钮的程序结构

图形界面的按钮是最普通的控件,Android响应按钮的程序结构大体分成如下两种:

    (1)采样匿名内部类的按钮实现方式:

    如下面的Java程序,在声明Class时只是从Activity派生,并没有实现任何接口。因此为了实现按钮事件的响应,就必须在下面的方法中用匿名内部类的方式实现,比如

       //退出按钮;
        bt_exit.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // Perform action on click
             finish();
            }
        });
在这段程序中,new View.OnClickListener() 就是匿名的的内部类,而

public void onClick(View v) {
                // Perform action on click
             finish();
            }
就是这个内部类onClick方法的实现。

    上述完整的程序结构如下:

public class a15act extends Activity {
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        setTitle("调光手电筒   2010-3-20");
       
        //建立主发光区TextView的对象;
        final TextView tv_light=(TextView) findViewById(R.id.tv_light);
       
       
        //建立三个Button的对象;
        Button bt_low=(Button) findViewById(R.id.bt_low);
        Button bt_high=(Button) findViewById(R.id.bt_high);
        Button bt_exit=(Button) findViewById(R.id.bt_exit);
       
        //退出按钮;
        bt_exit.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // Perform action on click
             finish();
            }
        });
        //低亮度按钮;
        bt_low.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // Perform action on click
             
    tv_light.setBackgroundColor(Color.GRAY);
             
            }
        });
       
        //高亮度按钮;
        bt_high.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // Perform action on click
             tv_light.setBackgroundColor(Color.WHITE);
             
            }
        });
       
    }
}

 

    (2)用Activity直接实现OnClickListener接口的方式:

    与上面的程序结构不同,在声明Class时可以直接实现OnClickListener,然后在Class内部就可以用同一个onClick方法实现所有按钮的响应,按钮区分可采用swith--case的语句结构实现。

    例如:public class mmact extends Activity implements OnClickListener, 在class声明时不仅从Activity派生,而且还实现OnClickListener 接口。在class中用语句实现接口OnClickListener 的onClick方法,即 public void onClick(View aView)。对于很多按钮事件,可以用switch--case实现,例如

      

        switch (aView.getId()) {  

            case R.id.button1 

                setTitle("Start the App");  

               

                EditText edt = (EditText) findViewById(R.id.edittext_name);  

                TextView tv = (TextView) findViewById(R.id.textview_display);  

                tv.setText("Hello," + edt.getText());  

               

               

               

                //android:text="YES" ;

 

                break 

            case R.id.button2 

                finish();  

                break 

        }  

    下面是个比较完整的程序结构:

 

public class mmact extends Activity implements OnClickListener {  

     

    @Override 

    public void onCreate(Bundle savedInstanceState) {  

          

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.main);  

        //从资源文件中获取按钮对象的引用  

        Button sButton1 = (Button)findViewById(R.id.button1);  

        Button sButton2 = (Button)findViewById(R.id.button2);  

        //注册点击事件监听者  

        sButton1.setOnClickListener(this);  

        sButton2.setOnClickListener(this);  

    }  

     

    public void onClick(View aView) {  

          

        switch (aView.getId()) {  

            case R.id.button1 

                setTitle("Start the App");  

               

                EditText edt = (EditText) findViewById(R.id.edittext_name);  

                TextView tv = (TextView) findViewById(R.id.textview_display);  

                tv.setText("Hello," + edt.getText());  

               

               

               

                //android:text="YES" ;

 

                break 

            case R.id.button2 

                finish();  

                break 

        }  

          

          

    }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值