Android 實現監聽事件的幾種方法

一、通過內部類實現

public class EventActivity extends AppCompatActivity {
    private Button mBtnEvent;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_event);
        mBtnEvent=findViewById(R.id.btn_event_second);
        //內部類實現
        mBtnEvent.setOnClickListener(new OnClick());
    }
    
    class OnClick implements View.OnClickListener{

        @Override
        public void onClick(View v) {
            switch (v.getId()){
                case R.id.btn_event_second:
                    ToastUtil.showMsg(EventActivity.this,"click...");
                    break;
            }
        }
    }
}

二、通過匿名內部類實現

public class EventActivity extends AppCompatActivity {
    private Button mBtnEvent;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_event);
        mBtnEvent=findViewById(R.id.btn_event_second);
        //匿名內部類
        mBtnEvent.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ToastUtil.showMsg(EventActivity.this,"click...");
            }
        });

    }
}

三、通過事件源所在類實現

public class EventActivity extends AppCompatActivity implements View.OnClickListener{
    private Button mBtnEvent;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_event);
        mBtnEvent=findViewById(R.id.btn_event_second);
        mBtnEvent.setOnClickListener(EventActivity.this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btn_event_second:
                ToastUtil.showMsg(EventActivity.this,"click...");
                break;
        }
    }   
}         

四、通過外部類實現

  1. 新建一個外部類:
public class MyClickListener implements View.OnClickListener {
    private Activity mActivity;
    public MyClickListener(Activity activity){
        this.mActivity=activity;
    }

    @Override
    public void onClick(View v) {
        ToastUtil.showMsg(mActivity, "click.....");
    }
}
  1. 調用外部類構造方法:
public class EventActivity extends AppCompatActivity {
    private Button mBtnEvent;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_event);
        
        mBtnEvent.setOnClickListener(new MyClickListener(EventActivity.this));
    }  
}          

五、佈局文件中 onClick 屬性實現

  1. 佈局文件添加 onClick :
    <Button
        android:id="@+id/btn_event_second"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="click me"
        android:textAllCaps="false"
        android:onClick="show"/>
  1. Activity 文件添加 onClick 中調用的方法:
public class EventActivity extends AppCompatActivity {
    private Button mBtnEvent;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_event);
    }
    public void show(View view){
        switch (view.getId()){
            case R.id.btn_event_second:
                ToastUtil.showMsg(EventActivity.this,"click from show");
                break;
        }
    }
}    

在這裏插入圖片描述

♥ 喜 歡 請 點 贊 喲 ♥
(●ˇ∀ˇ●)
發佈了81 篇原創文章 · 獲贊 56 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章