【问题标题】:Button long click does not work按钮长按不起作用
【发布时间】:2017-01-30 21:35:15
【问题描述】:

我正在制作音板,我想实现长按来分享声音。

我正在为每个按钮使用switch Case

 public void MainMMP(View view){
    switch (view.getId()) {
        case R.id.button1:
                MainMMP.release();
                MainMMP = MediaPlayer.create(this, R.raw.xxx1);
                MainMMP.start();
                break;
        case R.id.button2:
                MainMMP.release();
                MainMMP = MediaPlayer.create(this, R.raw.xxx2);
                MainMMP.start();
                break;
        case R.id.button3:
            MainMMP.release();
            MainMMP = MediaPlayer.create(this, R.raw.xxx3);
            MainMMP.start();
            break;

现在我想实现长按。我在这里尝试了很多不同的代码,但它对我不起作用。 我不知道将onLongClick 语句放在哪里以及如何放置。

谁能告诉我一个工作方法,如果长按它应该只给我一个我知道该方法有效的 Toast 吗?

【问题讨论】:

  • 我向您发布了一些您可能想要检查的代码。

标签: java button onlongclicklistener long-click


【解决方案1】:

您可以在需要的位置添加 OnLongClickListener,例如在 onCreate 方法中。

尝试使用以下代码:

    Button button = (Button)findViewById(R.id.button);
    button.setOnLongClickListener(new View.OnLongClickListener() {

    @Override
    public boolean onLongClick(View v) {

        //Your code

        return false; // True if you want to execute simple click code too
    }
});

【讨论】:

  • 但它应该为每个按钮执行另一个操作,这是我的问题
  • 你可以通过视图获取每个按钮的id。我真的不知道我是否明白问题的重点
【解决方案2】:

你可以用这个

    private View.OnLongClickListener listener = new View.OnLongClickListener() {

    @Override
    public boolean onLongClick(View view) {
        switch (view.getId())
           case R.id.button1:
             // Do something...
             break;
           case R.id.button2:
             // Do something else...
             break;
        // If you still want to get normal click callbacks return true,
        // if you do not then return false.
        return true; 
    }
}

代码中的某处

Button button1 = (Button)findViewById(R.id.button1);
Button button2 = (Button)findViewById(R.id.button2);
button1.setOnLongClickListener(listener);
button2.setOnLongClickListener(listener);

或者更好

获取onClick/onLongClick/whatever 回调的一种常见推荐方法是让Activity 实现回调接口。

class YourActivity extend Activity implements View.OnLongClickListener {

    @Override
    public boolean onCreate(/* ... */) {
        // ...
        button1.setOnLongClickListener(this);
        button2.setOnLongClickListener(this);
    }

    @Override
    public boolean onLongClick(View view) {
        // Same code as the one above
    }
}

【讨论】:

  • 嘿,我试过这个方法,但我此时 button1.setOnLongClickListener(listener);
  • 好吧,我尝试添加你的前 2 个代码,但我总是遇到问题 button1.setOnLongClickLister
  • 李斯特?是听者。请检查您的拼写。
猜你喜欢
  • 1970-01-01
  • 2011-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多