2013-10-14 115 views
0

我在OnCreate的OnClick函數中調用對話框。在該對話框中,應用程序的用戶可以將某些內容添加到外部數據庫。Android - Edittext在對話後獲得焦點

現在我的問題是,當對話框消失(myDialog.dismiss())並且它返回到實際活動時,EditText變得焦點。我的整個屏幕包含Spinners和TextViews,除了只有一個EditText。

奇怪的是,當第一次調用活動時,它會在活動頂部統計(顯示第一個Spinner而不是EditText),但是當對話框關閉時,EditText被聚焦。

我有android:windowSoftInputMode="adjustResize|stateHidden"清單中的活動標籤

內,我已經tryed把android:focusableInTouchMode="true"中的EditText在XML過,但沒有奏效。

任何人都可以幫我找到我要找的東西嗎?

在此先感謝!

回答

1

Android將集中在第一可聚焦從山頂所以你可以嘗試設置別的東西可聚焦:)

+0

嘿謝謝,我其實剛剛嘗試過,但現在情況變得更加複雜;)。對話框第一次被解散時,它顯示了中間的活動(使用EditText聚焦)。但第二次打開和關閉對話框(與以前完全相同的動作),它使用'klant.requestFocus()聚焦上部微調框。 klant.setFocusableInTouchMode(true);'。你有什麼線索可以解決這個問題嗎? – GeertG

+0

您是否嘗試過將EditText上的某個TextView設置爲可聚焦的? – JWqvist

+0

我已經嘗試設置上部微調爲焦點,但那只是第二次,但我需要它第一次工作。TextViews甚至低於EditText,所以不會工作:p – GeertG

0

Android焦點有點隨意,你不能真正控制它。您可以嘗試禁用textview,並在對話框消失後再次啓用它,但我會反對它。

說實話,只是讓Android做到這一點。我們試圖在一個非常大的應用程序中反對焦點邏輯,並在經過很多嘗試後放棄,並說服客戶不值得這樣麻煩。

+0

我在想,也許有一種方法讓對話被解散後活動滾動到頂部?或者也許有一種方法可以將焦點設置爲微調?然後問題也解決了 – GeertG

+0

滾動到頂端對用戶來說更糟糕。而且你不能「設置」焦點,你只能請求它。我對'requestFocus'的經驗是,它被忽略了90%的時間 – meredrica

+0

我也不能讓requestFocus工作,所以你不知道其他方式解決這個問題? – GeertG

0

我一直有這個同樣的問題。嘗試:

dialog.setOnDismissListener(new DialogInterface.OnDismissListener() { 
     @Override 
     public void onDismiss(DialogInterface dialog) { 
      hideSoftKeyboard(); 
     } 
    }); 




private void hideSoftKeyboard() { 
    View view = this.getCurrentFocus(); 
    if (view != null) { 
     InputMethodManager inputManager = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE); 
     inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); 
    } 
} 

這工作的一切除了在我的對話框一個按鈕,只有一個 onDismiss()方法。將focusable=truefocusableInTouchMode=true添加到我的EditText上方的TextView(如Jeppe Andersen提到的)可以解決此問題。希望這可以幫助。

相關問題