Avatar billede sovetryne Nybegynder
01. november 2013 - 09:06

RequestFocus kører to gange

I min Android-projekt har jeg to ZanyEditTexts (se http://stackoverflow.com/questions/4886858/android-edittext-deletebackspace-key-event/11377462 for hvad ZanyEditTexts er - kort sagt: det er bare en udvidelse på en EditText der gør det muligt at fange TILBAGE-knappen på et soft-tastatur på en Android-phone), kasser med lige højde og bredde, som er oprettet i en for-loop:
for (int i=0;i<strMyWord.length();i++)
  {
  final ZanyEditText edtKnownCharacter = new ZanyEditText(this);
  edtKnownCharacter.setLayoutParams(paramblock);
  edtKnownCharacter.setId(i);
  }

Jeg har undladt nogle parameters til ZanyEditText, da de ikke er vigtige til mit spørgsmål.

Jeg har valgt at bruge ZanyEditText da det skal være mulig at navigere tilbage til tidligere bokse når man trykker på TILBAGE på et soft-tastatur (IME), hvilket Google af uransagelige årsager ikke mere understøtter by default.

Så jeg har lavet en OnKeyListener:

edtKnownCharacter.setOnKeyListener(new OnKeyListener()
{
  @Override
  public boolean onKey(View v, int keyCode, KeyEvent event)
  {
  if(keyCode == KeyEvent.KEYCODE_DEL)
  {
  Integer intFocused;
  intFocused =(PlaygameActivity.this.getCurrentFocus().getId());
  EditText edtNewFocus = (EditText) findViewById((intFocused-1));
  edtNewFocus.requestFocus();
  }
return false;     
}
});

Der er bare to ting som jeg simpelthen ikke forstår:
1.
Hvorfor skifter focus TO bokse til venstre, når man trykker på TILBAGE-knappen? Jeg har prøvet "findViewById" til intFocused i stedet for intFocused-1 men det flytter focus slet ikke.
Så det ser ud til at requestfocus bliver kørt to gange.

2.
Hvorfor virker koden kun, når boksen er tom? Så snart der står et bogstav i en boks, OnKeyListener virker slet ikke.

Jeg håber at nogen kan lyse mine tanker lidt op...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester