【问题标题】:How can i use OnLongClick Listener on more than 1 buttons in a onLongClick Method in same class如何在同一类的 onLongClick 方法中的多个按钮上使用 OnLongClick 侦听器
【发布时间】:2017-11-16 09:28:43
【问题描述】:

这是我的代码...

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        text = (TextView) findViewById(R.id.textView);
        text.setText("Application Created");
        btn1 = (Button) findViewById(R.id.Mybutton);
        btn1.setOnClickListener(this);
        btn2 = (Button) findViewById(R.id.btn2);
        btn2.setOnClickListener(this);
        btn1.setOnLongClickListener(**this**);*(Error Generated here)*
    }

public boolean onLongClick( View v)
{


    return  true;
}

我正在尝试在两个以上的按钮上使用长按侦听器,并通过使用 switch case 在一个方法(公共布尔 onLongClick(View v))中处理它们。我尝试了我的代码,但是当我通过 btn1.setOnLongClickListener(this); "this" in the括号" 时生成错误,我正在同一个类中处理此事件。

【问题讨论】:

  • 在 longClick 中使用 switch case , switch(view.getId()) 并用它们各自的 ID 识别你的按钮
  • 非常感谢先生!试图帮助我,但我遇到了错误
  • btn1.setOnLongClickListener(this);*(Error Generated here)* 这部分你能帮我做这部分吗
  • 让你的类实现 onLongClickListener

标签: android event-handling onclicklistener onlongclicklistener android-event


【解决方案1】:

btn1.setOnLongClickListener(this);

并用View.OnLongClickListener暗示你的课程

然后重写这个方法

  @Override
public boolean onLongClick(View view) {
    switch(view.getId()){
     case R.id. :
     break;
  }
    return false;
}

【讨论】:

    【解决方案2】:

    要将 this 用作 OnLongClickListener,您的类应实现接口 View.OnLongClickListener 及其方法,例如:

    public class MyActivity extends AppCompatActivity implements View.OnLongClickListener {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            ...
            btn1.setOnLongClickListener(this);
        }
    
        @Override
        public boolean onLongClick(View view) {
            // your code here
        }
    }
    

    我相信你已经为 btn2.setOnClickListener(this) 和 OnClickListener 接口做了同样的事情。

    【讨论】:

      【解决方案3】:

      1) 使用接口 View.OnLongClickListener 实现您的活动 2) Override Boolean 方法将生成为 onLongClick,您可以在其中为按钮编写 switch case。 3) 使用 setOnLongClickListener(this) 将按钮初始化为button.setOnLongClickListener(this);[onCreate]

      示例如下-

      public class MainActivity extends AppCompatActivity implements View.OnLongClickListener{
      
          private Button btnOne, btnTwo, btnThree;
      
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
      
              btnOne = (Button) findViewById(R.id.idBtnOne);
              btnTwo = (Button) findViewById(R.id.idBtnTwo);
              btnThree = (Button) findViewById(R.id.idBtnThree);
      
              btnOne.setOnLongClickListener(this);
              btnTwo.setOnLongClickListener(this);
              btnThree.setOnLongClickListener(this);
      
          }
      
          @Override
          public boolean onLongClick(View v) {
      
              switch(v.getId()){
                  case R.id.idBtnOne:
                      Toast.makeText(MainActivity.this,"Long pressed on Button 1",Toast.LENGTH_LONG).show();
                      break;
                  case R.id.idBtnTwo:
                      Toast.makeText(MainActivity.this,"Long pressed on Button 2",Toast.LENGTH_LONG).show();
                      break;
                  case R.id.idBtnThree:
                      Toast.makeText(MainActivity.this,"Long pressed on Button 3",Toast.LENGTH_LONG).show();
                      break;
                  default:
                      break;
      
              }
      
              return false;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2013-03-30
        • 1970-01-01
        • 2013-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-01
        相关资源
        最近更新 更多