2014-04-08 1 views
0

В моем приложении, когда нажата кнопка, появляется диалоговое окно, затем отображается мягкая клавиатура, а затем, если я меняю ориентационную клавиатуру, всегда отображается. Но если я обедаю приложение на пейзаж, то на первой клавиатуре не появляется. Любая идея, почему клавиатура не отображается?Клавиатура на DialogFragment в ландшафтном режиме

public class PlateDialogFragment extends DialogFragment { 

static View view; 
public static PlateDialogFragment newInstance(View v) { 
    view=v; 
    PlateDialogFragment f = new PlateDialogFragment(); 
    f.setCancelable(false); 
    f.setStyle(STYLE_NO_FRAME, STYLE_NO_TITLE); 
    return f; 
} 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    Dialog dialog = super.onCreateDialog(savedInstanceState); 
    dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE); 
    return dialog; 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.fragment_dialog_plate, container, false); 
    setRetainInstance(false); 
    Button cancel = (Button) v.findViewById(R.id.exit); 
    cancel.setOnClickListener(cancelDialogListener); 
    Button next = (Button) v.findViewById(R.id.next); 
    next.setOnClickListener(nextDialogListener); 

    plate1 = (EditText) v.findViewById(R.id.plate1); 
    plate1.setOnFocusChangeListener(plateFocusChanged); 
    plate1.addTextChangedListener(plate1Watcher); 
    plate2 = (EditText) v.findViewById(R.id.plate2); 
    plate2.setOnFocusChangeListener(plateFocusChanged); 
    plate2.addTextChangedListener(plate2Watcher); 
    plate3 = (EditText) v.findViewById(R.id.plate3); 
    plate3.setOnFocusChangeListener(plateFocusChanged); 
    plate3.addTextChangedListener(plate3Watcher); 
    plate3.setOnEditorActionListener(plate3EditorActionListener); 
    plate1.requestFocus(); 
    getDialog().getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE); 
    return v; 
} 

@Override 
public void onDetach() { 
    Log.i("onDetach", "onDetach"); 
    InputMethodManager inputMethodManager = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); 
    inputMethodManager.hideSoftInputFromWindow(plate1.getWindowToken(), 0); 
    super.onDetach(); 
} 

ответ

0

Я думаю, это может быть связанно с полноэкранным [так называемым «добытым»] IME режимом для ландшафта - так как это было бы затемнить весь свой пользовательский интерфейс [который будет нелогичной для пользователя ], это не показано, пока пользователь не вводит один из входов [тем самым признавая, что они действительно хотят, чтобы IME всплывал и принять все недвижимое имущество ему нужно]

Как возможный способ справиться с этим, попробуйте установить

plate1.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI); 

для eachi EditText или использовать соответствующий атрибут

android:imeOptions="flagNoExtractUi" 

для EditText с в файлах верстки.

+0

Он уже установлен. – MSr

+0

Хм, тогда у меня нет идей. Я буду обновлять, если что-то приходит на ум –

+0

Благодарим за внимание. – MSr