Android edittext无法进入下一个edittext

时间:2012-07-20 12:55:36

标签: android dialog android-edittext

我的活动中有3个edittext。如果edittext长度不等于0,则第一个edittext将是setFocusable(false)(第一个edittext上的值将来自sqlite)。因此,当我开始活动时,重点将放在第二个edittext上。如果我点击第一个edittext,会出现一个对话框,提示是YES和NO按钮。如果我单击是,它将专注于第一个edittext,我可以编辑该值。但是当我按下手机键盘上的回车键时,它不会指示我进入第二个edittext。它将保留在第一个edittext上。我可以转到第二个edittext的唯一方法是按后退按钮并单击第二个edittext。不知道如何解决这个问题?

这是我的edittext代码:

if (txtBudgetText.getText().toString().length() != 0) {
        txtBudgetText.setFocusable(false);
        this.txtBudgetText = (EditText) findViewById(R.id.txtBudget);
        this.txtBudgetText.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // custom dialog
                if ((txtBudgetText.getText().toString().length() != 0) && (txtBudgetText.isFocused()==false) ) {
                    final Dialog dialog = new Dialog(context);
                    dialog.setContentView(R.layout.edit_budget);
                    dialog.setTitle("Confirmation");

                    // set the custom dialog components - text, image and
                    // button
                    TextView text = (TextView) dialog
                            .findViewById(R.id.text);
                    text.setText("Are you sure you want to edit your budget?");
                    ImageView image = (ImageView) dialog
                            .findViewById(R.id.image);
                    image.setImageResource(R.drawable.warning);

                    Button dialogYESButton = (Button) dialog
                            .findViewById(R.id.dialogButtonYes);
                    // if button is clicked, close the custom dialog
                    dialogYESButton
                            .setOnClickListener(new OnClickListener() {
                                public void onClick(View v) {
                                    EditText txtBudgetText = (EditText) findViewById(R.id.txtBudget);
                                    txtBudgetText.setFocusableInTouchMode(true);
                                    txtBudgetText.setFocusable(true);
                                    txtBudgetText.requestFocus();
                                    //txtBudgetText.setText("");
                                    dialog.dismiss();
                                }
                            });

                    Button dialogNOButton = (Button) dialog
                            .findViewById(R.id.dialogButtonNo);
                    // if button is clicked, close the custom dialog
                    dialogNOButton
                            .setOnClickListener(new OnClickListener() {
                                public void onClick(View v) {
                                    dialog.dismiss();
                                }
                            });

                    dialog.show();
                }
            }
        });
    }

2 个答案:

答案 0 :(得分:3)

通过在EditText布局声明中设置txtBudgetText.setImeOptions(EditorInfo. IME_ACTION_NEXT);,在调用findViewById后添加android:imeOptions="actionNext"或在layout.xml中设置它。

答案 1 :(得分:0)

请尝试以下代码:

e1.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {

            if (e1.getText().toString().length() == 1) // size as per your
                                                        // requirement
            {
                e2.requestFocus();

            }
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {


        }
    });