http://developer.android.com/reference/android/widget/Button.html
http://blog.chinatimes.com/tomsun/archive/2010/11/09/560824.html
Represents a push-button widget. Push-buttons can be pressed, or clicked, by the user to perform an action.
A typical use of a push-button in an activity would be the following:
public class MyActivity extends Activity { protected void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.content_layout_id); final Button button = (Button) findViewById(R.id.button_id); button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // Perform action on click } }); } }
However, instead of applying an
OnClickListener
to the button in your activity, you can assign a method to your button in the XML layout, using the android:onClick
attribute. For example:<Button android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="@string/self_destruct" android:onClick="selfDestruct" />
Now, when a user clicks the button, the Android system calls the activity's
selfDestruct(View)
method. In order for this to work, the method must be public and accept a View
as its only parameter. For example:public void selfDestruct(View view) { // Kabloey }
The
舊的方法:View
passed into the method is a reference to the widget that was clicked.以按鈕介面元件所提供的”setOnClickListener(View.OnClickListener)”方法,為該按鈕設置一個”OnClick監聽器”(OnClickListener)。
程式開發者才可以在該方法之中編寫”onClick(View)”方法裡頭的運算程式碼。
不過,這種方式除了會為這個”OnClick監聽器”多幾行程式碼之外,主要還會有一個缺點,那就是無論按鈕有沒有被按下,在應用程式被執行時,Android系統都需要為按鈕產生一個”OnClick監聽器”。
假若,介面中有十個按鈕,那等於在”onCreate(Bundle)”覆寫方法被執行時,就要產生十個”OnClick監聽器”。
新的方法:
當手機用戶按下按鈕時,便會直接呼叫該按鈕的方法,並執行method 裡頭的程式運算動作。如此一來,就可免除了”OnClick”監聽器的使用。
因為,該對應之方法是獨立撰寫於”onCreate(Bundle)”覆寫方法之外,而非寫在”onCreate(Bundle)”覆寫方法裡頭。所以,當”onCreate(Bundle)”覆寫方法被載入時,Android系統並不會將它馬上載入Activity生命週期的運作當中。
不過,此法有個缺點,那就是Android 1.1(API Level 2)與Android 1.5(API Level 3)並不支援。
且宣告的method務必使用public。
沒有留言:
張貼留言