簡體   English   中英

用Activity實現OnClickListener的效果如何?

[英]What's the effect of implementing the OnClickListener with an Activity?

我不明白為什么我必須實現OnClickListener才能使用OnClick方法。 假設此代碼:

public class KlickitestActivity extends Activity implements OnClickListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
}

@Override
public void onClick(View v) {
    // code what happens when a click is made
}

在類OnClickListener中,我僅使用方法onClick(View v)-此方法已被覆蓋。 為什么不能不實現OnClickListener而僅定義onClick方法?

您可以。 您可以使用匿名內部類來做到這一點:

Button1.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
           //Do stuff
        }});
Button2.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
           //Do stuff
        }});

但是,實現OnClickListener可以更輕松地處理事件,並提高代碼的可讀性。 即,您可以使用一個Listener方法,並通過一個switch語句傳遞一個View以處理多個按鈕/偵聽器,類似於:

public void onClick(View view){
    switch(view.getId()){

    case R.id.Button1:
        //Stuff for button 1
        break;

    case R.id.Button2:
        //Stuff for button 2
        break;
        break;

   case R.id.Button3:
        //Stuff for button 3
        break;
    }

只是為了擴展Mob的答案以及Scott的評論和鏈接...

Activity主要是用於UI的框架,因此沒有與用戶進行交互的預定義方式。 作為設計師/開發人員,我們選擇我們想要的,其UI組件Activity基礎上的目的,包含Activity

UI組件(例如ButtonsCheckBoxesListViews等)具有非常不同的用途,而Activity並不是其基本形式,它知道這些UI元素會響應哪些事件(單擊,長按,滑動等)。僅僅是因為沒有預定義的UI元素集可以始終承載Activity 因此,我們有責任根據我們如何設計UI來實現需要使用的事件處理程序(偵聽器)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM