이 애플리케이션에는 layout이 있습니다. 이제 사용자가 일부 버튼을 터치하고 그 버튼에서 손가락을 떼면 키가 텍스트 상자에 입력됩니다. 사용자에게 해당 편지를 발음하는 동안 의미합니다. "B가 입력되었습니다"라고 말합니다. 그래서 ACTION_UP 동안입니다. 이 이벤트를 처리하는 동안 나는 우연히 사용자가 터치하더라도 터치 이벤트를 방지해야합니다.하나의 컨텍스트에서 작동하지만 다른 컨텍스트에서는 작동하지 않는 터치 리스너 비활성화
터치 이벤트 중에 (UP 상태에서) 터치 리스너를 사용하지 않도록 설정하고 있지만 일어나지 않습니다. 터치 이벤트가 대기 중이고 현재 터치 이벤트가 처리되는 동안 터치 이벤트를 사용 중지하는 방법이 표시되지 않습니다. 하드 키 이벤트 처리 중에이 작업을 수행 할 수있었습니다. 나는이 이상한 행동을 이해할 수 없었다. 여기
내 코드공공 부울 onTouch (보기 V, MotionEvent 이벤트)입니다 {
// TODO 자동 생성 방법 스텁 문자열의 = NULL;
s = ((Button) v).getText().toString().trim();
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
b_prev=(Button)v;
//while(tts.isSpeaking());
tts.speak(s, TextToSpeech.QUEUE_FLUSH, null);
break;
case MotionEvent.ACTION_UP:
fun(false); //disabling the touch event for all buttons
for(int i=0;i<mybtn.length;i++)
{
if(isPointInsideView(event.getRawX(),event.getRawY(),mybtn[i]))
{
s = (mybtn[i]).getText().toString().trim();
btn=mybtn[i];
break;
//et.setText("up android" + s, TextView.BufferType.EDITABLE);
}
}
if(btn.equals(mybtn[27])) //clear button pressed
{
//do something
}
else if(btn.equals(mybtn[26])) //space button
{
//do soemthing
}
else
{
//do soemthing
}
fun(true); //enabling touch event for all buttons
break;
case MotionEvent.ACTION_MOVE:
for(int i=0;i<mybtn.length;i++)
{
if(isPointInsideView(event.getRawX(),event.getRawY(),mybtn[i]))
{
s = (mybtn[i]).getText().toString().trim();
btn=mybtn[i];
break;
//et.setText("down android" + s, TextView.BufferType.EDITABLE);
}
}
break;
}
return true;
}
void fun(boolean flag)
{
int i;
for(i=0;i<mybtn.length;i++)
{
if(flag==true)
mybtn[i].setOnTouchListener(this);
else
mybtn[i].setOnTouchListener(null);
mybtn[i].setEnabled(flag);
}
}
재미있는 터치 이벤트를 사용하지 않더라도 현재 터치 이벤트가 완료된 후 큐에 대기 중이고 실행 중입니다. 그래서이 문제를 해결하기 위해 내가해야 할 일을 말해주십시오.
나는 확인 이벤트에서 두 개의 하드 키를 사용하고 있다는 관찰을했습니다. 하드 키 이벤트를 사용하면 레이아웃 단추를 비활성화/활성화해도 문제가 없습니다. 그러나 위의 시나리오에서는 작동하지 않습니다. 그게 무슨 문제일까요? 나는 그 코드도 첨부하고있다. 이것 봐. 왜 이런 일이 일어나는지 모르겠다.
공공 부울 onKeyUp에 (INT 키 코드, KeyEvent를 이벤트) {
if (keyCode == KeyEvent.KEYCODE_SEARCH
&& event.getRepeatCount() == 0)
{
String s = et.getText().toString().trim();
fun(false); //disable touch events
if(pass==1 && quit==1)
{
name= et.getText().toString().trim();
number=get_Number(name);
if(number!=null)
{
pass++; // go for confirmation
in = new Intent(ContactActivity.this, Calling.class);
tts.speak("contact found", TextToSpeech.QUEUE_FLUSH, null);
while(tts.isSpeaking());
tts.speak("Do u want to continue", TextToSpeech.QUEUE_FLUSH, null);
while(tts.isSpeaking());
}
else
{
tts.speak(name +"does not exist", TextToSpeech.QUEUE_FLUSH, null);
while(tts.isSpeaking());
tts.speak("try again", TextToSpeech.QUEUE_FLUSH, null);
while(tts.isSpeaking());
fun(true); //enable touch events
}
}
else if(pass==2)
{
b.putString("number", number);
in.putExtras(b);
tts.speak("calling"+name, TextToSpeech.QUEUE_FLUSH, null);
while(tts.isSpeaking());
tts.shutdown();
startActivity(in);
//int pid = android.os.Process.myPid();
//android.os.Process.killProcess(pid);
finish();
//Intent
}
else if (quit==2) {
while(tts.isSpeaking());
tts.speak("Quitting application",TextToSpeech.QUEUE_FLUSH, null);
while(tts.isSpeaking());
tts.shutdown();
finish();
}
}//end of if
else if (keyCode == KeyEvent.KEYCODE_MENU
&& event.getRepeatCount() == 0)
{
fun(false);//disable touch events
if(pass==2)
{
pass=1;
//while(tts.isSpeaking());
tts.speak("Going back",TextToSpeech.QUEUE_FLUSH, null);
while(tts.isSpeaking());
fun(true);
//mhandler.postDelayed(mUpdateTimeTask, 1000);
}
else if(quit==2)
{
quit=1;
//while(tts.isSpeaking());
tts.speak("Going back",TextToSpeech.QUEUE_FLUSH, null);
while(tts.isSpeaking());
fun(true);//enable touch events
}
else if(quit==1)
{
quit++;
//mhandler.removeCallbacks(mUpdateTimeTask);
//while(tts.isSpeaking());
tts.speak("Do u want to quit",TextToSpeech.QUEUE_FLUSH, null);
while(tts.isSpeaking());
//Toast.makeText(TimerActivity.this,"Do u want to quit",Toast.LENGTH_LONG).show();
}
}
return true;
}
누군가 날 좀 도와주세요, 내가 많이 봤 다른 방법으로 시도 여기에 언급 된 해결 방법을 시도 하지만 여전히이 문제를 해결하는 방법에 대한 명확한 아이디어를 얻지 못했습니다 .... – siva
얘들 아,이 문제를 해결하기 위해 나를 도와주세요. 나는 그것을 많이 사용하지 않으려 고 노력했다. 나는 그것이 잘못되고있는 것을 얻지 못하고있다 .. – siva