歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android 用一個監聽器實現多個監聽

在Android應用程序中,有時要用到很多的按鈕元件,沒個按鈕都要有一個監聽事件,為了讓代碼看起來干淨簡潔,並節省一些內存,我們可以用一個監聽器(Listener)來實現多個按鈕的onClick監聽下面是一個具有的例子:
  1. package com.android;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.Intent;  
  5. import android.net.Uri;  
  6. import android.os.Bundle;  
  7. import android.view.View;  
  8. import android.widget.Button;  
  9.   
  10. public class IntentSelectActivity extends Activity implements View.OnClickListener{  
  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.         Button button1 = (Button)findViewById(R.id.btn1);  
  18.         Button button2 = (Button)findViewById(R.id.btn2);  
  19.         Button button3 = (Button)findViewById(R.id.btn3);  
  20.         button1.setOnClickListener(this);  
  21.         button1.setTag(1);  
  22.         button2.setOnClickListener(this);  
  23.         button2.setTag(2);  
  24.         button3.setOnClickListener(this);  
  25.         button3.setTag(3);  
  26.           
  27.   
  28.     }  
  29.     public void onClick(View v){  
  30.         int tag = (Integer) v.getTag();  
  31.         switch(tag){  
  32.         case 1:  
  33.             Intent music = new Intent(Intent.ACTION_GET_CONTENT);  
  34.             music.setType("audio/*");  
  35.             startActivity(Intent.createChooser(music, "Select music"));  
  36.             break;  
  37.         case 2:  
  38.             Intent dial = new Intent();  
  39.             dial.setAction("android.intent.action.CALL");  
  40.             dial.setData(Uri.parse("tel:13428720000"));  
  41.             startActivity(dial);  
  42.             break;  
  43.         case 3:  
  44.             Intent wallpaper = new Intent(Intent.ACTION_SET_WALLPAPER);  
  45.             startActivity(Intent.createChooser(wallpaper, "Select Wallpaper"));  
  46.             break;  
  47.         default :  
  48.             break;  
  49.         }  
  50.   
  51.     }  
  52. }  

這段代碼用三個按鈕實現了三個Intent意圖:音樂播放、自動撥號、背景選擇。只用了一個onClick處理,這樣代碼看起來簡潔了很多。

備注,Intent的屬性寫法與常數寫法:

  • 屬性寫法
    Intent dial = new Intent();
    dial.setAction("android.intent.action.CALL");
  • 常數寫法
    Intent wallpaper = new Intent(Intent.ACTION_SET_WALLPAPER);
    Intent music = new Intent(Intent.ACTION_GET_CONTENT);

在Intent類中,定義了action的常數。在記憶技巧上,可以用 xxx對應到ACTION_xxx 的方式記。例如:

CALL(android.intent.action.CALL)就是ACTION_CALL(Intent.ACTION_CALL)。

程序運行效果為:

更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11

Copyright © Linux教程網 All Rights Reserved