1

我的活动中有 3 个编辑文本。如果edittext长度不等于0(第一个edittext的值将来自sqlite),则第一个edittext将设置为setFocusable(false)。所以当我开始活动时,焦点将放在第二个编辑文本上。如果我单击第一个编辑文本,则会出现一个对话框,其中包含“是”和“否”按钮。如果我单击是,它将专注于第一个编辑文本,我可以编辑该值。但是当我按下手机键盘上的回车键时,它不会将我引导到第二个编辑文本。它将停留在第一个编辑文本上。我可以转到第二个编辑文本的唯一方法是按后退按钮并单击第二个编辑文本。知道如何解决这个问题吗?

这是我的编辑文本代码:

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();
                }
            }
        });
    }
4

2 回答 2

3

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

于 2012-07-20T12:59:08.020 回答
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) {


        }
    });
于 2014-09-24T14:15:51.630 回答