0

我已经实现了一个弹出对话框,里面有一个 EditText 元素。我无法在屏幕上显示软键盘,因为它无法填充 EditText 元素。这个问题是众所周知的,但我仍然无法让它工作。我尝试了不同的选项来解决这个问题 - 请参阅 onCreate 方法。谢谢。

public class MyPopup extends AbstractPlainPopup {
    protected Context _context;

    public CreatePlaylistPopup(Context context) {
        super(context);
        _context = context;
    }

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LayoutInflater inflater = getLayoutInflater();
        View container = inflater.inflate(R.layout.popup_new_playlist, null);

        final EditText titleInput = (EditText) container.findViewById(R.id.my_text_view);
        titleInput.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus) {
                    InputMethodManager mgr = (InputMethodManager) _context.getSystemService(Context.INPUT_METHOD_SERVICE);
                    mgr.showSoftInput(titleInput, InputMethodManager.SHOW_IMPLICIT);
                    //getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
                    //MyPopup.this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);



                }
            }
        });
        container.findViewById(R.id.cancelButton).setOnClickListener(
                new onCancelClick());
        container.findViewById(R.id.createButton).setOnClickListener(
                new onCreateClick());
        setContentView(container);
    }
    abstract public class AbstractPlainPopup extends AlertDialog implements Observable {

        public final static int CANCEL = 0;
        public final static int OK = 1;

        protected int _state;

        protected ArrayList<Observer> observers = new ArrayList<Observer>();

        public AbstractPlainPopup(Context context){
            super(context);
        }


    public AbstractPlainPopup(Context context, boolean cancelable, OnCancelListener cancelListener) {
        super(context, cancelable, cancelListener);
    }
4

2 回答 2

2
 Dialog dialog = new Dialog(this, R.style.Theme_Dialog_Transparent);                           
  dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
  dialog.setContentView(R.layout.enter_details);
  dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
于 2012-06-09T16:33:31.543 回答
0

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);

在 onCreate() 中使用它,而不是在焦点更改侦听器中

于 2012-06-09T12:42:31.153 回答