【问题标题】:onclick listener in androidandroid中的onclick监听器
【发布时间】:2011-03-31 04:03:17
【问题描述】:

我为 Next 和 Back 使用了两个图像按钮,我将 onclick 事件用于我希望在 onclick 时触发哪个图像按钮并在 onclick 事件中为 next 或 back 运行特定功能的按钮我将如何获得哪个图像按钮触发或 onclick运行时事件

【问题讨论】:

    标签: android onclicklistener


    【解决方案1】:

    您可以使用匿名内部类为每个按钮编写一个 onClick 函数。

    Button button1 = getMyButton();
    button1.setOnClickListener(new OnClickListener() {
       @Override
       public void onClick(View v) {
          // button 1 was clicked!
       }
      });
    Button button2 = getMyButton();
    button2.setOnClickListener(new OnClickListener() {
       @Override
       public void onClick(View v) {
          // button 2 was clicked!
       }
      });
    

    正如 Konstantin 所说,您还可以使用传入的 View 并打开 id。但是,如果你最终得到很多可点击的东西,我会觉得有点混乱。

    【讨论】:

    • 我很确定这是首选方法,除非你有很多按钮
    【解决方案2】:

    使用 View.getId() 来区分触发 onClick 事件的不同视图。

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
        case R.id.download:
        //code..
        break;
        case R.id.play:
        //code..
        break;
        case R.id.pause:
            //code..
        break;
        default:
            //code..
        break;
        }
    }
    

    【讨论】:

    • 嗨,我正在使用以下概念 imgvw_back.setOnClickListener(this) imgvw.setOnClickListener(this);静态int i=10; @Override public void onClick(View v) { // TODO 自动生成的方法存根 switch(v.getId()) { case R.id.back: Log.v("back",""+i--);休息; case R.id.forward: Log.v("next",""+i++);休息; } } 但是没用,不知道,为什么没运行?主要是在log中显示下一个单词
    • 你试过在onClick方法设置断点吗?它会运行吗?
    【解决方案3】:

    这可以通过在 XML 中为 ImageButton 声明一个唯一 ID 来实现,如下所示

    <ImageButton 
         android:id="@+id/backButton"
         .../>
    <ImageButton
         android:id="@+id/nextButton"
         .../>
    

    然后在 JAVA 如果你使用

    绑定

    通过为您的页面使用 ViewModel,您可以在 onCreate() 方法中使用以下代码,并且您必须将代码放在 View root = binding.getRoot();return root; 之间

    View root = binding.getRoot();
    
    ImageButton backBtn = binding.backButton;
    ImageButton nextBtn = binding.nextButton;
    
    //Now Comes the OnClickEvent using Lambda a easiest way
    
    backBtn.setOnClickListener(a -> 
    {
        //Your Handler Code for Back Button
    });
    
    nextBtn.setOnClickListener(b -> 
    {
        //Your Handler Code for Next Button
    });
    
    return root;
    

    那么对于

    正常

    ImageButton backBtn = findViewById(R.id.backButton);
    ImageButton nextBtn = findViewById(R.id.nextButton);
    
    //onClickListeners
    backBtn.setOnClickListener(a -> 
    {
        //Your Handler Code for Back Button
    });    
    nextBtn.setOnClickListener(b -> 
    {
        //Your Handler Code for Next Button
    });
    

    这个 Lambda 表达式可以通过两种方式完成

    方法一

    view.setOnCLickListener(method1 -> 
    {
        //Your Handler Code
    });
    

    方法二

    如果你已经定义了一个函数并且你要设置这个方法,那么

    view.setOnClickListener(method2 -> functionName(); );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多