0

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

 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 设备三星 2.2。因为要获得每个编辑字段,必须有一些关键事件。

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

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

4

1 回答 1

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);
        }
    }
}
于 2012-07-10T13:03:53.477 回答