代码之家  ›  专栏  ›  技术社区  ›  Dimon

使EditText从NumberPicker获取输入

  •  0
  • Dimon  · 技术社区  · 6 年前

    我试图创建一个EditText字段,onClick会打开一个numberPicker,这样用户就可以输入一个数字。

    tipET.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
    
                final NumberPicker numberPicker = new NumberPicker(getContext());
                numberPicker.setMaxValue(1000);
                numberPicker.setMinValue(0);
    
    
                AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
                builder.setView(numberPicker);
                builder.setTitle("tip");
                builder.setPositiveButton("ok",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int whichButton) {
                                Log.d(TAG, "TIP NUMBER IS:" + numberPicker.getValue());
                                num =  numberPicker.getValue();
                            }
                        });
                builder.setNegativeButton("cancel",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int whichButton) {
                                dialog.dismiss();
                            }
                        });
                builder.create();
                builder.show();
    
          }
        });
        tipET.setText(String.valueOf(num));
    

    出于某种原因,在我输入另一个数字后,tipET文本保持不变,这是为什么呢?

    1 回复  |  直到 6 年前
        1
  •  0
  •   deHaar    6 年前

    添加 tipET.setText(String.valueOf(num)); 到正按钮的onClick方法,就在下面 num = numberPicker.getValue();

    tipET.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
    
            final NumberPicker numberPicker = new NumberPicker(getContext());
            numberPicker.setMaxValue(1000);
            numberPicker.setMinValue(0);
    
    
            AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
            builder.setView(numberPicker);
            builder.setTitle("tip");
            builder.setPositiveButton("ok",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                            Log.d(TAG, "TIP NUMBER IS:" + numberPicker.getValue());
                            num =  numberPicker.getValue();
                            // update the text of the EditText here
                            tipET.setText(String.valueOf(num));
                        }
                    });
            builder.setNegativeButton("cancel",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                            dialog.dismiss();
                        }
                    });
            builder.create();
            builder.show();
    
      }
    });