2010-11-18 13 views
7

Tengo algunos problemas con el enfoque de control. Mi definición de la interfaz de abajo tiene:requestFocus omitiendo next EditText

fuente (RadioGroup/opcional) destino (EditarTexto) cantidad (EditarTexto) transferencia (Button)

voy a cambiar la visibilidad de la "fuente" en mi código. Cuando las veces que no las muestro, el foco va automáticamente a "cantidad", que yo esperaría que fuera el "destino". No sé lo que me estoy perdiendo. Sospecho que podría ser un error de Android, no lo sé. ¿Alguien sabe cómo resolver esto?

Gracias

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <RadioGroup android:id="@+id/source" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:visibility="gone"> 
    <RadioButton android:id="@+id/default" 
    android:checked="false" 
    android:text="@string/default"/> 
</RadioGroup> 

<TableLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:stretchColumns="1"> 
    <TableRow> 
    <TextView 
    android:text="@string/destination" 
    android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="16sp" 
     android:textColor="#ffffff" 
     android:paddingRight="10sp" 
     android:layout_weight="1"/> 

     <EditText android:id="@+id/destination" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:singleLine="true"><requestFocus/></EditText> 
    </TableRow> 

    <TableRow> 
    <TextView 
    android:text="@string/quantity" 
    android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="16sp" 
     android:textColor="#ffffff" 
     android:paddingRight="10sp" 
     android:layout_weight="1"/> 

     <EditText android:id="@+id/quantity" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:singleLine="true"/> 
    </TableRow> 
</TableLayout> 

<Button android:id="@+id/transfer" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/transfer"/> 
</LinearLayout> 
+0

Estoy probando esto en Android 2.2 y no puedo reproducir, el foco está en el Destino al principio. Si continúa teniendo problemas, le recomiendo que agregue 'EditText e = (EditText) findViewById (R.id.destination); e.requestFocus(); 'en su método' onResume'. –

+0

Gracias por su respuesta. Sí, pero estoy probando en Android 2.1. requestFocus() no pudo resolver el problema. – pocoa

+0

Ver mi respuesta en el tema: http://stackoverflow.com/a/13194129/348192 – iBog

Respuesta

8

parece ser un problema conocido. La siguiente publicación en el código de google para el proyecto de Android describe el mismo problema.

Issue 2705: Setting requestFocus on EditText prevents soft keyboard from opening

Usted podría intentar ajustar el enfoque en el código en lugar de en el diseño.

+0

Gracias por el enlace. Sí, intenté usar destination.requestFocus() pero no funcionó. – pocoa

+7

Gracias. this.post (new Runnable() { public void run() { text.requestFocus(); } }); resuelve el problema. – pocoa

2

De línea documentation:

Una visión en realidad no se toman el enfoque si no es enfocable (isFocusable() devuelve falso), o si es enfocable y no es enfocable en modo táctil (isFocusableInTouchMode ()) mientras el dispositivo está en modo táctil.

1

Utilice EditText 's método requestFocus(). :)

2

Me enfrenté al mismo problema, Pruebe este código que funcionó para mí.

   editText.post(new Runnable() { 
       public void run() { 
         editText.requestFocus(); 
            } 
              }); 
+0

mi vista no se resalta cuando se usa el método de enfoque. Intenté esto también pero no uso – AndroidOptimist