버튼과 그 두 명의 청취자을 처리하는 데 문제가 있습니다. 내 목표는 그것을 사용하는 버튼의 두 청취자를 교환입니다. 내가 필요한 행동이 아닙니다. 단추를 놓은 다음 다시 다른 방식으로 (다른 청취자와 함께) 단추를 눌러야합니다. 그래서 ..이 버튼을 "터치"하고 손가락을 떼면 "onTouch"리스너를 "onClick()"으로 바꿔야합니다.Android에서 리스너 간 전환
지금, 나는 다음을 수행 내 목표를 달성하기 위해 노력 :
final View.OnClickListener play_listener = new View.OnClickListener() {
@Override
public void onClick(View v) { Utility.playRecording(mediaPlayer); } };
final View.OnTouchListener rec_listener = new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
if (Utility.checkPermission(view.getContext())) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Utility.startRecording(recorder, output_formats, currentFormat, file_exts, timer);
break;
case MotionEvent.ACTION_UP:
Utility.stopRecording(recorder, timer);
//disabling my onTouch Listener
recplay_button.setOnTouchListener(null);
//Setting a new listener for the same button
recplay_button.setOnClickListener(play_listener);
//Changing its color.
recplay_button.setBackground(getDrawable(R.drawable.coloranimreverse));
break;
}
} else {
Utility.requestPermission(view.getContext());
} return false; }};
그래서, 교환 작동하지만 나는 이유를 얻을 수없는 이유를 소리 나는 연주는이 OnClickListener를이 또한 그것을 실행 설정 한 후 다른 청취자에게 설정됩니다. MotionEvent.ACTION_UP이 클릭으로 계산됩니까?
어떻게 해결할 수 있는지 알고 계십니까? 필요한 것은 OnTouch() 수신기에서 설정 한 것과 동일한 순간에 onClick() 수신기를 실행하지 않는 것입니다.
감사합니다.
내가 제대로 따라 해요 있는지 확실하지 않습니다, 또는 당신은 다음과 같이 그 일을하는 이유를 정확하게,하지만하지 않으려면'OnClickListener'는 후 발사 'ACTION_UP' 이벤트,'true'를 반환합니다. –
나는 그것을 내일 시도 할 것이다. 내가하려고하는 일은 버튼을 클릭하는 다른 모드를 연결하여 다른 작업을 시작하는 것입니다. – Cesarsk
횃불을 클릭하십시오 -> 내 미디어를 기록하십시오. 그 후, onclick -> 내 미디어를 재생 – Cesarsk