为什么SoftInput需要EditText才能在DialogFragment中显示?

时间:2013-07-18 21:17:00

标签: android android-edittext android-dialogfragment

我有一个扩展DialogFragment的自定义类。我遇到了一些有趣的行为。如果动态添加EditText,则在聚焦时,SoftInput键盘不会显示。

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    root = new LinearLayout(getActivity());
    root.setOrientation(LinearLayout.VERTICAL);

    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    Button button = new Button(getActivity());
    button.setLayoutParams(params);
    button.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            addEditText();
        }
    });

    root.addView(button);

    return new AlertDialog.Builder(getActivity())
        .setView(root)
        .create();
}

private void addEditText() {
    EditText editText = new EditText(getActivity());    
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
    editText.setLayoutParams(params);
    root.addView(editText);
}

如果在调用EditText之前添加setView,一切正常。只有在之后添加EditText时才会发生。 一个简单的解决方法是在根视图中添加EditText并将其可见性设置为“已消失”。此后所有其他动态添加的EditText都可以正常工作

我的问题是:这是Android系统中的错误吗?或者是否有一些原因让我忽略了这一点。

注意:解决方法有效,但需要一些时间才能找到,而且感觉就像是一个错误。

0 个答案:

没有答案