java中实现按钮事件监听器的3中方法

31 篇文章 3 订阅

java中实现按钮事件监听器的3中方法

最近在看安卓应用开发,看到了这部分,对这部分比较感兴趣,所以查看了一下

1.即使用匿名内部类的方法,这种方法是最常见的,也是最简便的,比较适合简单的设置一个监听器


public class TestEvent1 extends Activity {
   @Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.testevent);
      final TextView Text = (TextView) findViewById(R.id.text1);
      // 获得句柄
      final Button Button1 = (Button) findViewById(R.id.button1);
      Button1.setOnClickListener(new OnClickListener() { // 实现行为功能
         public void onClick(View v) {
            Text.setBackgroundColor(Color.RED);
         }
      });
}


2.实现OnClickListener()这个接口,比较适合用来在一个地方集中处理点集事件

public class HomeTestActivity extends Activity implements View.OnClickListener{

    private Button btn_test_activity;
    private Button btn_test_guide;
    private Button btn_test_dialog;
    private Button btn_test_db;
    private Button btn_test_cache;
    private Button btn_test_webview;
    private TextView tv_info;

    @Override
    protected void onCreate() {
        setContentView(R.layout.activity_home_test);
        btn_test_activity = (Button) findViewById(R.id.btn_test_activity);
        btn_test_guide = (Button) findViewById(R.id.btn_test_guide);
        btn_test_dialog = (Button) findViewById(R.id.btn_test_dialog);
        btn_test_db = (Button) findViewById(R.id.btn_test_db);
        btn_test_cache = (Button) findViewById(R.id.btn_test_cache);
        btn_test_webview = (Button) findViewById(R.id.btn_test_webview);
        btn_test_activity.setOnClickListener(this);
        btn_test_guide.setOnClickListener(this);
        btn_test_dialog.setOnClickListener(this);
        btn_test_db.setOnClickListener(this);
        btn_test_cache.setOnClickListener(this);
        btn_test_webview.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        Intent intent = new Intent();
        switch (v.getId()){
            case R.id.btn_test_activity:
                intent.setClass(this, ActivityTestHomePage.class);
                break;
            case R.id.btn_test_guide:
                intent.setClass(this, GuideActivity.class);
                break;
            case R.id.btn_test_dialog:
                intent.setClass(this, DialogActivity.class);
                break;
            case R.id.btn_test_db:
                intent.setClass(this, DBActivity.class);
                break;
            case R.id.btn_test_cache:
                intent.setClass(this, CacheActivity.class);
                break;
            case R.id.btn_test_webview:
                intent.setClass(this, WebViewActivity.class);
            default:
                return;
        }
        startActivity(intent);
    }
}


3.通过定义实现活动类中的 2 个子类,来实现 View.OnClickListener 这个接口

public class TestEvent3 extends Activity{
   static final String TAG = "TestEvent3";
   TextView mText;
   Button1_OnClickListener mListener1 = new Button1_OnClickListener();
   Button2_OnClickListener mListener2 = new Button2_OnClickListener();
   class Button1_OnClickListener implements OnClickListener { // 接口的第一个实现
      public void onClick(View v) {
         mText.setBackgroundColor(Color.RED);
      }
   }
   class Button2_OnClickListener implements OnClickListener { // 接口的第一个实现
      public void onClick(View v) {
         mText.setBackgroundColor(Color.GREEN);
      }
   }
   @Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.testevent);
      mText = (TextView) findViewById(R.id.text1);
      final Button mButton1 = (Button) findViewById(R.id.button1);
      final Button mButton2 = (Button) findViewById(R.id.button2);
      mButton1.setOnClickListener(mListener1);
      mButton2.setOnClickListener(mListener2);
   }
}


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值