2016-09-16 6 views
0

GHOST 게임을 기반으로 앱을 만들려고했습니다. 소문자 알파벳 만 허용하고 wordfragment라는 문자열에 추가 한 다음 computerTurn 함수를 호출하는 onKeyUp 함수를 작성했습니다. 하지만 난 처음으로 성공적으로 실행 한 후에 보았습니다 즉, computerTurn 함수를 호출하고 computerturn 함수에서 그것을 반환합니다 (onkeyup) 두 번째 시간을 작동하지 않습니다. 내 코드에서 onKeyUp 기능.onKeyUp 함수가 두 번째로 호출하지 않습니다.

@Override 
public boolean onKeyUp(int KeyCode, KeyEvent event) { 
    char ch = (char)event.getUnicodeChar(); 
    if(!(ch >= 'a' && ch <='z' )) { 
     return super.onKeyUp(KeyCode, event); 
    } 
    wordFragment = wordFragment + ch; 
    label.setText(COMPUTER_TURN); 
    text.setText(wordFragment); 

    userTurn = false; 
    computerTurn(); 
    return true; 
} 

및 computerTurn 함수 내 코드

private boolean computerTurn() { 
    if(wordFragment.length() >= 4 && dictionary.isWord(wordFragment)){ 
     label.setText("Computer wins"); 
     // challenge.setEnabled(false); 
     return true; 
    } 
    else { 
     String word = dictionary.getAnyWordStartingWith(wordFragment.toLowerCase()); 
     if(word!=null){ 
      Toast.makeText(GhostActivity.this, "comp word found", Toast.LENGTH_SHORT).show(); 
      wordFragment += word.charAt(wordFragment.length()); 
     } 
     else{ 
      Toast.makeText(GhostActivity.this, "comp word not found", Toast.LENGTH_SHORT).show(); 
      label.setText("User Wins!!"); 
      //challenge.setEnabled(false); 
      // wordFragment += (char)(random.nextInt(26) + 61); 
     } 
    } 
    // Do computer turn stuff then make it the user's turn again 
    userTurn = true; 
    label.setText(USER_TURN); 
    text.setText(wordFragment); 
    Toast.makeText(GhostActivity.this, "return true", Toast.LENGTH_SHORT).show(); 
    return true; 
} 

답변

0

안드로이드 softkeyboards 거의 키 이벤트를 사용하지 않습니다. 안드로이드 소프트 키보드를 사용하는 올바른 방법은 InputConnection을 사용하는 것입니다. 일반적으로 하드웨어 키만 키 이벤트를 발행합니다. 기본적으로 당신은 Windows 또는 웹에서는이 방법을 코딩하고 있지만 Android에서는 잘못된 방법입니다.