Нет программной клавиатуры для EditText внутри диалогового окна - PullRequest
0 голосов
/ 03 сентября 2011

Я хотел бы создать диалоговое окно, в которое пользователь может вставить номер;поэтому я переопределил метод onCreateDialog следующим образом:

protected Dialog onCreateDialog(int id) {
            EditText editNum=new EditText(this);
            editNum.setMaxLines(1);
            editNum.setRawInputType(InputType.TYPE_CLASS_NUMBER);
            String strVal=listViewNum.getItemAtPosition(selectedItem).toString();
            strVal=strVal.substring(strVal.indexOf("=")+1,strVal.length()-1);
            editNum.setText(Util.formatNumber(Double.parseDouble(strVal)));
            editNum.selectAll();
            editNum.setGravity(android.view.Gravity.RIGHT);
            return new AlertDialog.Builder(this)
            .setTitle(getString(R.string.DialogEditNumberTitle))
            .setView(editNum)
            .setPositiveButton("OK", new OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                            // TODO Auto-generated method stub

                    }
            })
            .setNegativeButton("Annulla", new OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                            // TODO Auto-generated method stub

                    }
            })
            .create();
    }

Но, несмотря на это, мне все еще разрешено вставлять нечисловые символы, и нет никаких признаков программной клавиатуры ... что не так с моим кодом?

1 Ответ

0 голосов
/ 04 сентября 2011

Я не уверен, что вы могли бы сделать программно, НО вы могли бы создать свой собственный макет, который будет содержать текст редактирования следующим образом:

<EditText android:id="@+id/myEditText"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:inputType="numbers"
android:digits="0123456789"/>

, а затем в коде для onCreateDialog:

    LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View myLayout = inflater.inflate(R.layout.myLayout, null); //I showed this as a linear layout before, but it must be a view to inflate it
        EditText myEditText = (EditText)myLayout.findViewById(R.id.myEditText);
        //create myEditText listener here, if needed




dialog.setView(myLayout);
...