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 デバイス samsung 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 に答える