美好的一天。對不起,長名稱,我必須是描述性的。Android - 從類中調用DialogFragment方法關閉DialogFragment的軟鍵盤
我有一個Android應用程序,我有一個自定義ListView與EditText和一個DialogFragment的頂部。用戶仍然可以看到EditText,因爲DialogFragment沒有覆蓋整個屏幕,用戶仍然可以在ListView中選擇EditText。我的自定義ListView中的EditText有一個custom Keyboard from this tutorial。我的對話框片段包含一個使用默認Android軟鍵盤的編輯文本。
我遇到的主要問題是當用戶單擊我的對話框片段(android軟鍵盤顯示)中的EditText並單擊自定義ListView中的EditText時,我的自定義鍵盤顯示在Android軟件後面鍵盤和Android軟鍵盤不會摺疊/隱藏。
一個解決我確實是這樣的:
我提出的對話片段的根視圖(的EditText的父視圖)是可選擇的爲這樣:
android:clickable="true"
android:focusableInTouchMode="true"
使得聚焦ISN 't「鎖定」或被EditText壟斷。我還在隱藏軟鍵盤的DialogFragment類中創建了一個函數。我有兩個人,他們都工作:
public void hideKB(){
InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(instructionInput.getWindowToken(), 0);
//instructionInput is my EditText
}
public void hideKeyboard(View view) {
InputMethodManager imm =(InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
我呼籲爲二者之一,例如:
instructionInput.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
hideKB();
//hideKeyboard(v);
}
}
});
,它工作正常。當用戶點擊對話框片段時,軟鍵盤關閉。
現在,我想調用此函數或實現相同的效果,當用戶單擊我的自定義ListView中的EditText。在我的EditText自定義鍵盤類具有這樣的功能:
public void registerEditText(int resid, final SearchResult context, final ItemDialog itemDialog) {
EditText edittext= (EditText)mHostActivity.findViewById(resid);
edittext.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus) {
Log.d("hello","edittext focused");
itemDialog.hideKB();
showCustomKeyboard(v);
}
else {
hideCustomKeyboard();
}
}
});
//removed extra lines of code
}
請不是SearchResult
是DialogFragment的基本活動和ItemDialog
是我的對話片段。
我所做的是,當用戶專注於ListView中的EditText時,onFocusChange
函數會觸發,並嘗試調用我的Dialog Fragment的hideKB()
函數。不過,我拋出一個NullPointerException:
FATAL EXCEPTION: main
Process: com.agict.marswin, PID: 14038
java.lang.NullPointerException
at UtilityClasses.CustomKeyboard$2.onFocusChange(CustomKeyboard.java:187)
和187線在我CustomKeyboard
是調用從對話片段的功能代碼:
itemDialog.hideKB();
而且我不明白爲什麼我收到因爲我在初始化我的itemDialog
之後調用了registerEditText
,因此該行爲空指針。我認爲我的問題歸結爲從一個類調用DialogFragment的函數。
任何人都可以幫助我嗎?過去6個多小時我一直在爲此工作,並且我被卡住了。很感謝任何形式的幫助。謝謝。