web-dev-qa-db-ja.com

setOnClickListenerおよびsetOnLongClickListenerは、単一ボタンの問題で呼び出します

誰かができるなら私はあなたの助けが必要です、それは私の解決のために素晴らしいことになるでしょう。それが可能かどうかはわかりませんが、どうにかしてこれを修正したいと思います。実際には、シングルボタンクリックイベントに2つのメソッド、単純クリックとロングクリックを実装したいと思います。ここに私のコード::

homebutton = (ImageButton) findViewById(R.id.home_icon);
homebutton.setOnClickListener(new OnClickListener() {
    public void onClick(View arg0) {
        Intent intent = new Intent(context, MainActivity.class);
        startActivity(intent);
    }
});
homebutton.setOnLongClickListener(new OnLongClickListener() {
    public boolean onLongClick(View arg0) {
        Toast.makeText(getApplicationContext(), "Long Clicked " , Toast.LENGTH_SHORT).show();
        return false;
    }
});

だから、ここで私は何か問題があり、シングルクリックでも完全に機能し、ロングクリックも機能していますが、問題は、ロングクリックイベントの後、上記のonClickメソッドのコードで定義されているようにMainActivityも開始することです。

それは行われるべきではありません、falseを返すこともありますが、それでも私が望むように機能していません..だから、誰かがそれを解決するのを手伝ってください。

前もって感謝します..

12
jt.

onLongClickメソッドでreturnTRUEを実行する必要があると思います-タッチイベントが消費され、それ以上のイベント処理は必要ありません。

homebutton.setOnLongClickListener(new OnLongClickListener() {
    public boolean onLongClick(View arg0) {
        Toast.makeText(getApplicationContext(), "Long Clicked " ,
              Toast.LENGTH_SHORT).show();

        return true;    // <- set to true
    }
});
35
waqaslam