代码之家  ›  专栏  ›  技术社区  ›  Ahmed Nabil DJDaveMark

Android请求焦点到EditText后又碰了一次EditText?

  •  1
  • Ahmed Nabil DJDaveMark  · 技术社区  · 6 年前

    我有两个 EditText ( myEditText1 myEditText2
    我需要你的抚摸 我的编辑文本1
    1做一些生意[这里没问题,申请了所需的生意]
    2 我的编辑文本2 [不走运?]

    final EditText myEditText1 = (EditText) findViewById(R.id.myEditText1);
    final EditText myEditText2 = (EditText) findViewById(R.id.myEditText2);
    
    // ...
    
    myEditText1.setOnTouchListener(new View.OnTouchListener()
    {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
    
            // My business when myEditText1 touched [ OK ]
            // ...
    
            // TODO
            // Need to request focus to another EditText myEditText2 ?
    
            return false;
        }
    });
    


    但运气不好,注意力仍然集中在

    myEditText2.requestFocus();
    

    相关问题
    EditText request focus
    Change Focus to EditText Android

    2 回复  |  直到 6 年前
        1
  •  3
  •   Ahmed Nabil DJDaveMark    6 年前

    你可以设置一个 OnClickListener 在编辑文本时,如下所示:

    this.editText1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //your code
                    editText2.requestFocus();
                }
    });
    

    特殊情况
    当EditText没有焦点时,不会调用onClick()
    你可以在下面的问题线索中找到这个案子的细节
    onClick event is not triggering | Android

        2
  •  2
  •   Quacking Kahuna    6 年前

    试试这个:

    myEditText1.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    
            }
    
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
    
            }
    
            @Override
            public void afterTextChanged(Editable s) {
                if(myEditText1.getText().length() > 3){
                    myEditText2.requestFocus();
                }
            }
         });
    
        3
  •  1
  •   Bach Vu    6 年前

    可能是因为键盘。你可以试试

    myEditText2.requestFocus();
    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.showSoftInput(myEditText2, InputMethodManager.SHOW_IMPLICIT);
    

    这对我有用

        4
  •  1
  •   Dinesh Sarma    6 年前

    public void requestFocus(View view) {
        if (view.requestFocus()) {
            getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
        }
    }
    

    像这样使用,

    requestFocus(myEditText2);