1

アクティビティに3つのエディットテキストがあります。編集テキストの長さが0に等しくない場合、最初の編集テキストはsetFocusable(false)になります(最初の編集テキストの値はsqliteからのものになります)。したがって、アクティビティを開始すると、2番目のエディットテキストに焦点が当てられます。最初のエディットテキストをクリックすると、[はい]と[いいえ]ボタンのダイアログが表示されます。[はい]をクリックすると、最初の編集テキストにフォーカスが移り、値を編集できます。しかし、電話のキーボードのEnterキーを押しても、2番目のエディットテキストに移動しません。最初のエディットテキストに残ります。2番目のエディットテキストに移動する唯一の方法は、戻るボタンを押して2番目のエディットテキストをクリックすることです。どうすればこの問題を解決できますか?

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

2 に答える 2

3

txtBudgetText.setImeOptions(EditorInfo. IME_ACTION_NEXT);呼び出した後に追加するか、EditTextレイアウト宣言で設定してfindViewByIdlayout.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 に答える