Mam 2 fragmenty z kilkoma polami EditText. Oba są ułożone podobnie, jednak bardzo dziwne, że 1 będzie tabulatorem między polami EditText, ale drugi nie.Android XML - poruszanie się między polami EditText
Jest to jeden Mam problemy z:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/loginparent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ff008DFF" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dip"
android:background="#ff008DFF"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="40dip"
android:contentDescription="@string/logoDesc"
android:src="@drawable/logo1" />
<EditText
android:id="@+id/usernameLog"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:focusable="true"
android:focusableInTouchMode="true"
android:hint="@string/username"
android:imeOptions="actionNext"
android:singleLine="true"
android:textSize="14sp" />
<EditText
android:id="@+id/passwordLog"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/password"
android:imeOptions="actionDone"
android:inputType="textPassword"
android:singleLine="true"
android:textSize="14sp" />
<Button
android:id="@+id/loginButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/login" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dip" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:focusableInTouchMode="false"
android:text="@string/newuser"
android:textColor="#ffffffff"
android:textSize="14sp" />
<Button
android:id="@+id/viewSignupBtn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/signup" />
</LinearLayout>
</LinearLayout>
<ProgressBar
android:id="@+id/progressBarLog"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:focusable="false"
android:focusableInTouchMode="false"
android:padding="70dip"
android:visibility="gone" />
</RelativeLayout>
Kiedy zakładkę z pierwszym polu EditText, nacisk znika wtedy na 2nd karcie porusza się skupić na 2 pola. To samo z powrotem, gdy ustawiam tabulację, a potem znowu kartę i pojawia się ona na przycisku pod nią.
Nie ma nic szczególnego, co dzieje się w onCreateView Fragmentu oprócz otrzymywania wskaźników do pól EditText. Jak mówię, mam drugi widok bardzo podobny, który działa dobrze.
Gdy zakładka ja zauważam uzyskać te ostrzeżenia wyświetlane w logcat:
04-24 19:31:29.695: D/InputEventConsistencyVerifier(2040): KeyEvent: ACTION_UP but key was not down.
04-24 19:31:29.695: D/InputEventConsistencyVerifier(2040): in [email protected]
04-24 19:31:29.695: D/InputEventConsistencyVerifier(2040): 0: sent at 4325570000000, KeyEvent { action=ACTION_UP, keyCode=KEYCODE_TAB, scanCode=15, metaState=0, flags=0x8, repeatCount=0, eventTime=4325570, downTime=4325514, deviceId=0, source=0x101 }
04-24 19:31:31.076: D/InputEventConsistencyVerifier(2040): KeyEvent: ACTION_UP but key was not down.
04-24 19:31:31.076: D/InputEventConsistencyVerifier(2040): in [email protected]
04-24 19:31:31.076: D/InputEventConsistencyVerifier(2040): 0: sent at 4326945000000, KeyEvent { action=ACTION_UP, keyCode=KEYCODE_TAB, scanCode=15, metaState=0, flags=0x8, repeatCount=0, eventTime=4326945, downTime=4326889, deviceId=0, source=0x101 }
04-24 19:31:32.255: D/InputEventConsistencyVerifier(2040): KeyEvent: ACTION_UP but key was not down.
04-24 19:31:32.255: D/InputEventConsistencyVerifier(2040): in [email protected]
04-24 19:31:32.255: D/InputEventConsistencyVerifier(2040): 0: sent at 4328123000000, KeyEvent { action=ACTION_UP, keyCode=KEYCODE_TAB, scanCode=15, metaState=0, flags=0x8, repeatCount=0, eventTime=4328123, downTime=4328053, deviceId=0, source=0x101 }
EDIT -----------------
Ok, jak zasugerowano w komentarzach, dodałem na FocusChanged słuchaczy do wszystkich widoków (Looped przez nich wszystkich i dodany słuchacz) i Logged what the view is. Za każdym razem, gdy zakładam, otrzymuję dziennik, ale dziwne jest to, że przechodzę do pierwszego pola EditText, a dziennik mówi, że pole editText ma fokus, ponownie ja zakładam i fokus jest tracony, ale dziennik mówi, że to samo pole EditText ma fokus! Zakładka ponownie, a druga dostaje fokus, a log mówi poprawny id, zakładka ponownie skupia się na stracie, ale znowu log mówi, że drugie pole EditText ma ostrość, chociaż nie ma !!
Bardzo dziwne zachowanie.
Czy "Android: focusableInTouchMode" może być problemem? –
Obawiam się, że nie. EditText i tak można ustawić. – Darren
Czy może to mieć coś wspólnego ze sposobem dodawania Fragmentu? Czy istnieje również sposób, aby dowiedzieć się, co się staje, gdy zniknie z pola ExitText? – Darren