按钮长按不起作用

时间:2017-01-30 21:35:15

标签: java button onlongclicklistener long-click

我正在制作一个音板,我希望实现长按以分享声音。

我正在为每个按钮使用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,我知道这个方法有效吗?

2 个答案:

答案 0 :(得分:0)

您可以在onCreate方法中添加OnLongClickListener,例如。

尝试使用以下代码:

    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
    }
});

答案 1 :(得分:0)

您可以使用此

    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
    }
}