玩转Android---事件监听篇---第2篇

事件监听篇---第二篇

 

下面是各种常用控件的事件监听的使用

①EditText(编辑框)的事件监听---OnKeyListener

②RadioGroup、RadioButton(单选按钮)的事件监听---OnCheckedChangeListener

③CheckBox(多选按钮)的事件监听---OnCheckedChangeListener

④Spinner(下拉列表)的事件监听---OnItemSelectedListener

⑤Menu(菜单)的事件处理---onMenuItemSelected

⑥Dialog(对话框)的事件监听---DialogInterface.OnClickListener()

 

第一个例子:EditText的事件监听

 

Java代码  收藏代码
  1. package org.hualang.eventtest2;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.view.KeyEvent;  
  6. import android.view.View;  
  7. import android.widget.EditText;  
  8. import android.widget.TextView;  
  9.   
  10. public class EventTest2 extends Activity {  
  11.     /** Called when the activity is first created. */  
  12.     private TextView mytext;  
  13.     private EditText edittext;  
  14.     @Override  
  15.     public void onCreate(Bundle savedInstanceState) {  
  16.         super.onCreate(savedInstanceState);  
  17.         setContentView(R.layout.main);  
  18.         mytext = (TextView)findViewById(R.id.mytext);  
  19.         edittext = (EditText)findViewById(R.id.edittext);  
  20.         /** 
  21.          * 设置当EditText为空,则提示“请输入账号” 
  22.          * 在配置文件main.xml中可以用android:hint="请输入账号"来实现 
  23.          */  
  24.         edittext.setHint("请输入账号");  
  25.         //下面为EditText事件监听  
  26.         edittext.setOnKeyListener(new EditText.OnKeyListener()  
  27.         {  
  28.   
  29.             @Override  
  30.             public boolean onKey(View arg0, int arg1, KeyEvent arg2) {  
  31.                 //得到文字,显示在TextView中  
  32.                 mytext.setText("内容:"+edittext.getText().toString());  
  33.                 return false;  
  34.             }  
  35.               
  36.         });  
  37.     }  
  38. }  

 main.xml

Java代码  收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     >  
  7. <TextView    
  8.     android:layout_width="fill_parent"   
  9.     android:layout_height="wrap_content"   
  10.     android:id="@+id/mytext"  
  11.     />  
  12. <EditText  
  13.     android:id="@+id/edittext"  
  14.     android:layout_width="fill_parent"  
  15.     android:layout_height="wrap_content"  
  16.     android:textSize="10pt"  
  17. />  
  18. </LinearLayout>  

 

运行结果如下:



 

 

 

第二个例子:单选按钮的事件监听处理

Java代码  收藏代码
  1. package org.hualang.eventtest;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.view.Gravity;  
  6. import android.widget.RadioButton;  
  7. import android.widget.RadioGroup;  
  8. import android.widget.Toast;  
  9.   
  10. public class EventTest3 extends Activity {  
  11.     /** Called when the activity is first created. */  
  12.     private RadioGroup group;  
  13.     private RadioButton radio1,radio2,radio3,radio4;  
  14.     @Override  
  15.     public void onCreate(Bundle savedInstanceState) {  
  16.         super.onCreate(savedInstanceState);  
  17.         setContentView(R.layout.main);  
  18.           
  19.         group = (RadioGroup)findViewById(R.id.radiogroup1);  
  20.         radio1 = (RadioButton)findViewById(R.id.button1);  
  21.         radio2 = (RadioButton)findViewById(R.id.button2);  
  22.         radio3 = (RadioButton)findViewById(R.id.button3);  
  23.         radio4 = (RadioButton)findViewById(R.id.button4);  
  24.           
  25.         group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {  
  26.               
  27.             @Override  
  28.             public void onCheckedChanged(RadioGroup group, int checkedId) {  
  29.                 // TODO Auto-generated method stub  
  30.                 if (checkedId == radio2.getId())  
  31.                 {  
  32.                     showMessage("正确答案:" + radio2.getText()+",恭喜你,答对了");  
  33.                 }  
  34.                 else  
  35.                 {  
  36.                     showMessage("对不起,虽然很多,但不是公认的最多");  
  37.                 }  
  38.             }  
  39.         });  
  40.     }  
  41.     public void showMessage(String str)  
  42.     {  
  43.         Toast toast = Toast.makeText(this, str, Toast.LENGTH_SHORT);  
  44.         toast.setGravity(Gravity.TOP, 0220);  
  45.         toast.show();  
  46.     }  
  47. }  

 main.xml

Java代码  收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     >  
  7.     <TextView  
  8.         android:id="@+id/mytextview"  
  9.         android:layout_width="fill_parent"  
  10.         android:layout_height="wrap_content"  
  11.         android:text="哪个城市的美女最多?"  
  12.     />  
  13.     <RadioGroup  
  14.         android:id="@+id/radiogroup1"  
  15.         android:layout_width="wrap_content"  
  16.         android:layout_height="wrap_content"  
  17.         android:orientation="vertical"  
  18.     >  
  19.         <RadioButton  
  20.             android:id="@+id/button1"  
  21.             android:layout_width="wrap_content"  
  22.             android:layout_height="wrap_content"  
  23.             android:text="杭州"  
  24.         />  
  25.         <RadioButton  
  26.             android:id="@+id/button2"  
  27.             android:layout_width="wrap_content"  
  28.             android:layout_height="wrap_content"  
  29.             android:text="重庆"  
  30.         />  
  31.         <RadioButton  
  32.             android:id="@+id/button3"  
  33.             android:layout_width="wrap_content"  
  34.             android:layout_height="wrap_content"  
  35.             android:text="成都"  
  36.         />  
  37.         <RadioButton  
  38.             android:id="@+id/button4"  
  39.             android:layout_width="wrap_content"  
  40.             android:layout_height="wrap_content"  
  41.             android:text="香港"  
  42.         />  
  43.     </RadioGroup>  
  44. </LinearLayout>  

 

运行结果如下:



 

第三个例子:复选框的事件处理

Java代码  收藏代码
  1. package org.hualang.eventtest4;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.view.Gravity;  
  6. import android.view.View;  
  7. import android.widget.Button;  
  8. import android.widget.CheckBox;  
  9. import android.widget.CompoundButton;  
  10. import android.widget.CompoundButton.OnCheckedChangeListener;  
  11. import android.widget.Toast;  
  12.   
  13. public class EventTest4 extends Activity {  
  14.     /** Called when the activity is first created. */  
  15.     private CheckBox ch1,ch2,ch3,ch4,ch5;  
  16.     private Button mybutton;  
  17.     @Override  
  18.     public void onCreate(Bundle savedInstanceState) {  
  19.         super.onCreate(savedInstanceState);  
  20.         setContentView(R.layout.main);  
  21.           
  22.         mybutton = (Button)findViewById(R.id.mybutton);  
  23.         ch1 = (CheckBox)findViewById(R.id.check1);  
  24.         ch2 = (CheckBox)findViewById(R.id.check2);  
  25.         ch3 = (CheckBox)findViewById(R.id.check3);  
  26.         ch4 = (CheckBox)findViewById(R.id.check4);  
  27.         ch5 = (CheckBox)findViewById(R.id.check5);  
  28.           
  29.         ch1.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener()  
  30.         {  
  31.   
  32.             @Override  
  33.             public void onCheckedChanged(CompoundButton arg0, boolean arg1) {  
  34.                 // TODO Auto-generated method stub  
  35.                 if(ch1.isChecked())  
  36.                 {  
  37.                     showMessage("你选择了"+ch1.getText());  
  38.                 }  
  39.             }  
  40.               
  41.         });  
  42.         ch2.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener()  
  43.         {  
  44.   
  45.             @Override  
  46.             public void onCheckedChanged(CompoundButton arg0, boolean arg1) {  
  47.                 // TODO Auto-generated method stub  
  48.                 if(ch3.isChecked())  
  49.                 {  
  50.                     showMessage("你选择了"+ch2.getText());  
  51.                 }  
  52.             }  
  53.               
  54.         });  
  55.         ch3.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener()  
  56.         {  
  57.   
  58.             @Override  
  59.             public void onCheckedChanged(CompoundButton arg0, boolean arg1) {  
  60.                 // TODO Auto-generated method stub  
  61.                 if(ch3.isChecked())  
  62.                 {  
  63.                     showMessage("你选择了"+ch3.getText());  
  64.                 }  
  65.             }  
  66.               
  67.         });  
  68.         ch4.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener()  
  69.         {  
  70.   
  71.             @Override  
  72.             public void onCheckedChanged(CompoundButton arg0, boolean arg1) {  
  73.                 // TODO Auto-generated method stub  
  74.                 if(ch4.isChecked())  
  75.                 {  
  76.                     showMessage("你选择了"+ch4.getText());  
  77.                 }  
  78.             }  
  79.               
  80.         });  
  81.         ch5.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener()  
  82.         {  
  83.   
  84.             @Override  
  85.             public void onCheckedChanged(CompoundButton arg0, boolean arg1) {  
  86.                 // TODO Auto-generated method stub  
  87.                 if(ch5.isChecked())  
  88.                 {  
  89.                     showMessage("你选择了"+ch5.getText());  
  90.                 }  
  91.             }  
  92.               
  93.         });  
  94.           
  95.         mybutton.setOnClickListener(new Button.OnClickListener()  
  96.         {  
  97.   
  98.             @Override  
  99.             public void onClick(View arg0) {  
  100.                 // TODO Auto-generated method stub  
  101.                 int num = 0;  
  102.                 if(ch1.isChecked())  
  103.                 {  
  104.                     num++;  
  105.                 }  
  106.                 if(ch2.isChecked())  
  107.                 {  
  108.                     num++;  
  109.                 }  
  110.                 if(ch3.isChecked())  
  111.                 {  
  112.                     num++;  
  113.                 }  
  114.                 if(ch4.isChecked())  
  115.                 {  
  116.                     num++;  
  117.                 }  
  118.                 if(ch5.isChecked())  
  119.                 {  
  120.                     num++;  
  121.                 }  
  122.                   
  123.                 showMessage("谢谢参与,您一共选择了"+num+"项");  
  124.                   
  125.             }  
  126.               
  127.         });  
  128.     }  
  129.       
  130.   
  131.       
  132.     public void showMessage(String str)  
  133.     {  
  134.         Toast toast = Toast.makeText(this, str, Toast.LENGTH_SHORT);  
  135.         toast.setGravity(Gravity.TOP, 0220);  
  136.         toast.show();  
  137.     }  
  138. }  

 

Java代码  收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     >  
  7.     <TextView    
  8.         android:layout_width="fill_parent"   
  9.         android:layout_height="wrap_content"   
  10.         android:text="你喜欢哪些智能手机系统"  
  11.         />  
  12.     <CheckBox  
  13.         android:id="@+id/check1"  
  14.         android:layout_width="fill_parent"  
  15.         android:layout_height="wrap_content"  
  16.         android:text="苹果 ios"  
  17.     />  
  18.     <CheckBox  
  19.         android:id="@+id/check2"  
  20.         android:layout_width="fill_parent"  
  21.         android:layout_height="wrap_content"  
  22.         android:text="谷歌 Android"  
  23.     />  
  24.     <CheckBox  
  25.         android:id="@+id/check3"  
  26.         android:layout_width="fill_parent"  
  27.         android:layout_height="wrap_content"  
  28.         android:text="RIM BlackBerry"  
  29.     />  
  30.     <CheckBox  
  31.         android:id="@+id/check4"  
  32.         android:layout_width="fill_parent"  
  33.         android:layout_height="wrap_content"  
  34.         android:text="微软 Windows phone 7"  
  35.     />  
  36.     <CheckBox  
  37.         android:id="@+id/check5"  
  38.         android:layout_width="fill_parent"  
  39.         android:layout_height="wrap_content"  
  40.         android:text="诺基亚 symbian"  
  41.     />  
  42.     <Button  
  43.         android:id="@+id/mybutton"  
  44.         android:layout_width="fill_parent"  
  45.         android:layout_height="wrap_content"  
  46.         android:text="确定"  
  47.     />  
  48.   
  49. </LinearLayout>  

 

运行结果:



 

第四个例子:Spinner下拉菜单的事件处理

Java代码  收藏代码
  1. package org.hualang.eventtest5;  
  2.   
  3. import android.app.Activity;     
  4. import android.os.Bundle;     
  5. import android.view.View;     
  6. import android.widget.AdapterView;     
  7. import android.widget.ArrayAdapter;     
  8. import android.widget.Spinner;     
  9. import android.widget.TextView;     
  10.     
  11. public class EventTest5 extends Activity {     
  12.     /** Called when the activity is first created. */    
  13.     private static final String[] citys={"杭州","北京","成都","大连","深圳","南京"};     
  14.     private TextView text;     
  15.     private Spinner spinner;     
  16.     private ArrayAdapter<String> adapter;     
  17.     @Override    
  18.     public void onCreate(Bundle savedInstanceState) {     
  19.         super.onCreate(savedInstanceState);     
  20.         setContentView(R.layout.main);     
  21.         text=(TextView)findViewById(R.id.text);     
  22.         spinner=(Spinner)findViewById(R.id.spinner);     
  23.              
  24.         //将可选内容与ArrayAdapter连接     
  25.         adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,citys);     
  26.         //设置下拉列表风格     
  27.         adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);     
  28.         //将adapter添加到spinner中     
  29.         spinner.setAdapter(adapter);     
  30.         //添加Spinner事件监听     
  31.         spinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener()     
  32.         {     
  33.     
  34.             @Override    
  35.             public void onItemSelected(AdapterView<?> arg0, View arg1,     
  36.                     int arg2, long arg3) {     
  37.                 // TODO Auto-generated method stub     
  38.                 text.setText("你所在的城市是:"+citys[arg2]);     
  39.                 //设置显示当前选择的项     
  40.                 arg0.setVisibility(View.VISIBLE);     
  41.             }     
  42.     
  43.             @Override    
  44.             public void onNothingSelected(AdapterView<?> arg0) {     
  45.                 // TODO Auto-generated method stub     
  46.                      
  47.             }     
  48.                  
  49.         });     
  50.     }     
  51. }    

 

main.xml

Java代码  收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>     
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    
  3.     android:orientation="vertical"    
  4.     android:layout_width="fill_parent"    
  5.     android:layout_height="fill_parent"    
  6.     >     
  7. <TextView       
  8.     android:id="@+id/text"    
  9.     android:layout_width="fill_parent"      
  10.     android:layout_height="wrap_content"      
  11.     android:text="您所在的城市"    
  12.     />     
  13. <Spinner     
  14.     android:id="@+id/spinner"    
  15.     android:layout_width="wrap_content"    
  16.     android:layout_height="wrap_content"    
  17.     android:layout_centerHorizontal="true"    
  18. />     
  19. </LinearLayout>  

 

运行结果如下:



 

 

 

第五个例子:Menu(菜单)的事件处理

Java代码  收藏代码
  1. package org.hualang.eventtest6;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.view.Menu;  
  6. import android.view.MenuInflater;  
  7. import android.view.MenuItem;  
  8. import android.widget.Toast;  
  9.   
  10. public class EventTest6 extends Activity {  
  11.     /** Called when the activity is first created. */  
  12.     @Override  
  13.     public void onCreate(Bundle savedInstanceState) {  
  14.         super.onCreate(savedInstanceState);  
  15.         setContentView(R.layout.main);  
  16.     }  
  17.   
  18.     @Override  
  19.     public boolean onCreateOptionsMenu(Menu menu) {  
  20.         // TODO Auto-generated method stub  
  21.         MenuInflater inflater = getMenuInflater();  
  22.         //设置menu界面为res/menu/menu.xml  
  23.         inflater.inflate(R.menu.menu, menu);  
  24.         return true;  
  25.     }  
  26.   
  27.     @Override  
  28.     public boolean onMenuItemSelected(int featureId, MenuItem item) {  
  29.         //得到当前选中的MenuItem的ID  
  30.         int itemId = item.getItemId();  
  31.         switch(itemId)  
  32.         {  
  33.         case R.id.apple:  
  34.             Toast toast = Toast.makeText(this"这是苹果", Toast.LENGTH_SHORT);  
  35.             toast.show();  
  36.             break;  
  37.         case R.id.banana:  
  38.             Toast toast2 = Toast.makeText(this"这是香蕉", Toast.LENGTH_SHORT);  
  39.             toast2.show();  
  40.             break;  
  41.         case R.id.exit:  
  42.             EventTest6.this.finish();  
  43.             break;  
  44.         }  
  45.         return true;  
  46.     }  
  47.       
  48.       
  49. }  

 res/menu/menu.xml

Java代码  收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <menu xmlns:android="http://schemas.android.com/apk/res/android">  
  3.     <item android:id="@+id/apple"  
  4.         android:title="苹果"  
  5.     />  
  6.     <item android:id="@+id/banana"  
  7.         android:title="香蕉"  
  8.         />  
  9.     <item android:id="@+id/exit"  
  10.         android:title="退出"  
  11.         />  
  12. </menu>  

 

运行结果如下:



 

 

 

第六个例子:对话框的事件处理

Java代码  收藏代码
  1. package org.hualang.dialog;  
  2.   
  3. import android.app.Activity;  
  4. import android.app.AlertDialog;  
  5. import android.app.Dialog;  
  6. import android.app.ProgressDialog;  
  7. import android.content.DialogInterface;  
  8. import android.content.DialogInterface.OnClickListener;  
  9. import android.os.Bundle;  
  10. import android.view.LayoutInflater;  
  11. import android.view.View;  
  12.   
  13. public class MainActivity extends Activity {  
  14.     /** Called when the activity is first created. */  
  15.     ProgressDialog myDialog;  
  16.     @Override  
  17.     public void onCreate(Bundle savedInstanceState) {  
  18.         super.onCreate(savedInstanceState);  
  19.         setContentView(R.layout.main);  
  20.           
  21.         Dialog dialog = new AlertDialog.Builder(MainActivity.this)  
  22.         .setTitle("登录提示")  
  23.         .setMessage("这里需要登录")  
  24.         .setPositiveButton("确定"new DialogInterface.OnClickListener() {  
  25.               
  26.             @Override  
  27.             public void onClick(DialogInterface dialog, int which) {  
  28.                 // TODO Auto-generated method stub  
  29.                 LayoutInflater factory = LayoutInflater.from(MainActivity.this);  
  30.                 final View DialogView = factory.inflate(R.layout.dialog, null);  
  31.                 AlertDialog dlg = new AlertDialog.Builder(MainActivity.this)  
  32.                 .setTitle("登录框")  
  33.                 .setView(DialogView)  
  34.                 .setPositiveButton("确定"new DialogInterface.OnClickListener() {  
  35.                       
  36.                     @Override  
  37.                     public void onClick(DialogInterface dialog, int whichButton) {  
  38.                         // TODO Auto-generated method stub  
  39.                         myDialog = ProgressDialog.show(MainActivity.this"请等待...""正在为你登录"true);  
  40.                         new Thread()  
  41.                         {  
  42.                             public void run()  
  43.                             {  
  44.                                 try  
  45.                                 {  
  46.                                     sleep(3000);  
  47.                                 }catch(Exception e)  
  48.                                 {  
  49.                                     e.printStackTrace();  
  50.                                 }finally  
  51.                                 {  
  52.                                     myDialog.dismiss();  
  53.                                 }  
  54.                             }  
  55.                         }.start();  
  56.                     }  
  57.                 }).setNegativeButton("取消",  
  58.                         new DialogInterface.OnClickListener() {  
  59.                               
  60.                             @Override  
  61.                             public void onClick(DialogInterface dialog, int which) {  
  62.                                 // TODO Auto-generated method stub  
  63.                                 MainActivity.this.finish();  
  64.                             }  
  65.                         }).create();  
  66.                 dlg.show();  
  67.             }  
  68.         }).setNeutralButton("退出"new DialogInterface.OnClickListener() {  
  69.               
  70.             @Override  
  71.             public void onClick(DialogInterface dialog, int which) {  
  72.                 // TODO Auto-generated method stub  
  73.                 MainActivity.this.finish();  
  74.             }  
  75.         }).create();  
  76.         dialog.show();  
  77.       
  78.     }  
  79. }  

 

res/layout/dialog.xml

Java代码  收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     >  
  7.     <TextView    
  8.         android:id="@+id/username"  
  9.         android:layout_width="wrap_content"   
  10.         android:layout_height="wrap_content"  
  11.         android:layout_marginLeft="20dip"  
  12.         android:layout_marginRight="20dip"   
  13.         android:text="账号"  
  14.         android:gravity="left"  
  15.         android:textAppearance="?android:attr/textAppearanceMedium"  
  16.     />  
  17.     <EditText  
  18.         android:id="@+id/myusername"  
  19.         android:layout_height="wrap_content"  
  20.         android:layout_width="fill_parent"  
  21.         android:layout_marginLeft="20dip"  
  22.         android:layout_marginRight="20dip"  
  23.         android:scrollHorizontally="true"  
  24.         android:autoText="false"  
  25.         android:capitalize="none"  
  26.         android:gravity="fill_horizontal"  
  27.         android:textAppearance="?android:attr/textAppearanceMedium"  
  28.     />  
  29.     <TextView  
  30.         android:id="@+id/password"  
  31.         android:layout_width="fill_parent"  
  32.         android:layout_height="wrap_content"  
  33.         android:layout_marginLeft="20dip"  
  34.         android:layout_marginRight="20dip"  
  35.         android:text="密码"  
  36.         android:gravity="left"  
  37.         android:textAppearance="?android:attr/textAppearanceMedium"  
  38.     />  
  39.     <EditText  
  40.         android:id="@+id/mypassword"  
  41.         android:layout_width="fill_parent"  
  42.         android:layout_height="wrap_content"  
  43.         android:layout_marginLeft="20dip"  
  44.         android:layout_marginRight="20dip"  
  45.         android:scrollHorizontally="true"  
  46.         android:autoText="false"  
  47.         android:capitalize="none"  
  48.         android:gravity="fill_horizontal"  
  49.         android:password="true"  
  50.     />  
  51. </LinearLayout>  

 

 

运行结果:



 

 

 

转自:http://www.iteye.com/topic/1060815

posted @ 2011-11-26 17:59  hnrainll  阅读(5263)  评论(0编辑  收藏  举报