Android我怎么知道编辑文本正在编辑?

时间:2012-02-13 07:04:04

标签: android

如何知道我的编辑文本何时完成编辑?就像当用户选择下一个框,或按下软键盘上的完成按钮一样。

我的代码在这里

EditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {

      public void onFocusChange(View arg0, boolean arg1) {

      int tag=(Integer) arg0.getTag();
      final EditText Caption = (EditText) arg0;

      previous_Meter_Reading = new HashMap<String, String>();
      previous_Meter_Reading = c.get(tag); 
      String pre =previous_Meter_Reading.get("previousMeterReading");
      previous =Integer.parseInt(pre);


      Log.i("out",pre);


      if (!arg1 && ! Caption.getText().toString().equals("")) {

      int pos=arg0.getId();           
      Log.i("Tag", arg0.getTag().toString());

      Current = Integer.valueOf(Caption.getText().toString());
      if(Current<previous){
          AlertDialog.Builder builder = new AlertDialog.Builder(
                    context);
            builder.setTitle("WARNING");
            builder.setIcon(android.R.drawable.ic_dialog_alert);
            builder.setMessage("Current value should be greater");
            builder.setPositiveButton("ok",
                    new DialogInterface.OnClickListener() {

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

                        }
                    });

            AlertDialog diag = builder.create();
            diag.show();
      }





      Toast.makeText(context, "Focus Changed",Toast.LENGTH_SHORT);

      }

      } });


    return view;
}

输入每个字符后,弹出警报框。我基本上想要获取输入文本,当我将焦点更改为下一个EditText框并获取丢失焦点edittext的值并与prevoius值进行比较时,任何人都可以为此提供任何解决方案 提前谢谢。

3 个答案:

答案 0 :(得分:0)

在您的情况下,我可能给您的最佳建议是在对话框中接收用户的输入并将它们返回到TextView字段。这样,当用户在对话框中按OK时,它可能会触发您的自定义代码,以便使用之前输入的文本执行任何操作。

如果您正在考虑键盘上的完成键事件,那么它不可靠,因为用户可能只是按下它导致键盘完成事件而导航到下一个EditText被激怒

答案 1 :(得分:0)

你必须为EditText实现类似的东西:OnEditorActionListener。

答案 2 :(得分:0)

您的editText必须设置OnEditorActionListener。您可以像这样定义EditorActionListener:

OnEditorActionListener mListener = new TextView.OnEditorActionListener(){

        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            if (actionId == EditorInfo.IME_ACTION_DONE) {
                //do stuff here
            }
                return true;
        }
    };