来自编辑文本的数据

时间:2012-07-10 11:45:45

标签: android android-edittext

我正在获取编辑文本字段的数据,如下所示:

 editfield1.setOnEditorActionListener(this);

然后

 @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        InputMethodManager imm = (InputMethodManager)v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
        if (actionId == EditorInfo.IME_ACTION_DONE ||(event.equals(KeyEvent.KEYCODE_ENTER))||(event.equals(KeyEvent.KEYCODE_DPAD_CENTER))){
            imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
            String data= editfield1.getText().toString();
        }
    }

这适用于某些Android设备samsung 2.2。因为要获得每个编辑字段 必须有一些关键事件。

但如果我尝试在micromax 4.0中运行,则无法从所有编辑字段中获取数据。 因为在这里我可以触摸每个编辑字段并写入值..所以没有关键事件。

我该如何解决这个问题。 请帮忙。

1 个答案:

答案 0 :(得分:0)

我想你想跟踪TextView / EditText中的每个变化,不是吗? 您可以使用addTextChangedListener来跟踪更改。如果你需要,我会添加一个例子。

编辑: 您可以实现某种包装器来处理多个文本视图:

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        attachTextViewWatcher(R.id.text1);
        attachTextViewWatcher(R.id.text2);
        attachTextViewWatcher(R.id.text3);
        attachTextViewWatcher(R.id.text4);
        attachTextViewWatcher(R.id.text5);
        // tbc...
    }

    private void attachTextViewWatcher(int resId) {
        TextView tv = (TextView) findViewById(resId);
        tv.addTextChangedListener(new TextViewWatcher(tv));
    }

    private void onTextChanged(TextView v, CharSequence s, int start, int before, int count) {
        // TODO do your stuff
    }

    private class TextViewWatcher implements TextWatcher {

        private final TextView tv;

        public TextViewWatcher(TextView tv) {
            this.tv = tv;
        }

        @Override
        public void afterTextChanged(Editable s) {
            // ignore
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            // ignore
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            MainActivity.this.onTextChanged(tv, s, start, before, count);
        }
    }
}