фокусировка нажатой кнопки в Android-активности - PullRequest
0 голосов
/ 16 февраля 2012

У меня есть несколько кнопок в деятельности. Каждая кнопка открывает отдельный AlertDialog . Когда приложение запускается и я нажимаю на кнопку с помощью мыши, я хочу, чтобы нажатая кнопка была в фокусе ... чтобы потом я мог перемещаться по кнопкам D-Pad. Но это не так, и, что еще хуже, фокус иногда теряется навсегда, если какой-либо другой элемент в упражнении не фокусировался ... поэтому я не могу перемещаться с помощью кнопок D-Pad ...

Я хочу уточнить, что это НЕ из-за AlertDialog , который открывается после установки actionItem.requestFocus () . Я также проверил, комментируя код открытия диалога. но не повезло

Я пытаюсь сделать это следующим образом:

public void buttonClicked(View actionItem){

    //Set focus on clicked button -- but this does not work
    actionItem.requestFocus();

    switch(actionItem.getId()){
    case R.id.btnLogin:
        //Show AlertDialog 1
        break;
    case R.id.btnInfo:
        //Show AlertDialog 2
        break;
    case R.id.btnClose:
        //Show AlertDialog 3
        break;
    }
}

Я хочу, чтобы нажатая кнопка имела фокус перед открытием любого AlertDialog ... поэтому, когда AlertDialog закрывается, нажатая кнопка будет иметь фокус.

это buttonClicked событие регистрируется несколькими кнопками .. Я установил его следующим образом:

<Button
    android:id="@+id/btnClose"
    style="@style/button"
    android:onClick="buttonClicked"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
    android:drawableLeft="@drawable/close"
    android:focusable="true"
    android:text="Exit" />

<Button
    android:id="@+id/btnInfo"
    style="@style/button"
    android:onClick="buttonClicked"                
    android:layout_marginRight="5dp"
    android:layout_toLeftOf="@+id/btnClose"
    android:layout_centerVertical="true"
    android:drawableLeft="@drawable/information"
    android:focusable="true"
    android:text="About" />

функция buttonClicked вызывается при каждом нажатии кнопки, но эта кнопка не получает фокус ...

есть идеи у?

1 Ответ

0 голосов
/ 16 февраля 2012

Попробуйте вместо вызова requestFocus () в начале метода вызывать его внутри каждого случая.Тогда вы можете быть уверены, что это правильный элемент, который вы установили в фокусе.

Пример:

switch(actionItem.getId()){
case R.id.btnLogin:
actionItem.requestFocus()
    break;
}

Это мое лучшее предположение, это работает для меня.:)

...