0

I have an item in my application, click on it and it pops up an alert dialog with a text box and a button. It's a bit clunky, the text box isn't focused so you have to click it to bring up the keyboard. Is there a better way to prompt for text input?

Roger
  • 4,249
  • 10
  • 42
  • 60

3 Answers3

1

If you need to let it always open you can use

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

And then use editText.requestFocus to get the text into there.

Or use the android:inputMethod on the EditText layout and add the "alwaysVisible" flag.

Marcos Vasconcelos
  • 18,136
  • 30
  • 106
  • 167
0

You can create a focus listener on the EditText on the AlertDialog, then get the AlertDialog's Window. From there you can make the soft keyboard show by calling setSoftInputMode.

final AlertDialog dialog = ...;

editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus) {
            dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
        }
    }
});
evilone
  • 22,410
  • 7
  • 80
  • 107
0
AlertDialog.Builder builder = new AlertDialog.Builder(tab3.this);
                    builder.setTitle(params[4]);
                    final EditText et = new EditText(tab3.this);
                    et.setText(params[5]);  

                    builder.setView(et);
                    builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            params[5] = et.getText().toString();
                            ViewGroup vg = (ViewGroup) arg1;
                            TextView txv = (TextView)vg.findViewById(R.id.datetext_view2);
                            txv.setText(params[5]); 
                            form_adapter.datas.put(ckey, params);
                            save(GlobalVars.current_id,form_adapter.datas);

                        } 
                    });

                 final AlertDialog alert = builder.create();
                 et.setOnFocusChangeListener(new View.OnFocusChangeListener() {
                        @Override
                        public void onFocusChange(View v, boolean hasFocus) {
                            if (hasFocus) {
                                alert.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
                            }
                        }
                    }); 
                 alert.show();  
2red13
  • 11,197
  • 8
  • 40
  • 52