两个editText焦点跳转的问题!?

tg01 2016-06-06 11:26:49
如码!

public class MainActivity extends AppCompatActivity {
private EditText e1,e2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

e1 = (EditText) findViewById(R.id.editText);
e2 = (EditText) findViewById(R.id.editText2);

e2.setOnEditorActionListener(new TextView.OnEditorActionListener(){
@Override
public boolean onEditorAction(TextView v, int actionId,KeyEvent event) {
if (actionId== EditorInfo.IME_ACTION_SEND ||(event!=null&&event.getKeyCode()== android.view.KeyEvent.KEYCODE_ENTER)) {

e1.requestFocus();

return true;
}
return false;
}
});
}
}


希望达成效果时,焦点在e2时,按下回车键,焦点跳回e1。
但是按照代码运行的结果是:
焦点从e2按下回车后跳回e1后,瞬间焦点又跳到e2了。
何解?
...全文
515 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tg01 2016-06-07
  • 打赏
  • 举报
回复
引用 6 楼 shuijinglingsos 的回复:
不用任何代码,只要在布局文件中这样写就可以实现你的功能 editText2要设置singleLine=“true”


<EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/editText1"
        android:singleLine="true"/>

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:nextFocusDown="@+id/editText1"
        android:id="@+id/editText2"
        android:singleLine="true" />

……懂了!3Q
睡精灵 2016-06-07
  • 打赏
  • 举报
回复
不用任何代码,只要在布局文件中这样写就可以实现你的功能
editText2要设置singleLine=“true”



<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editText1"
android:singleLine="true"/>

<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:nextFocusDown="@+id/editText1"
android:id="@+id/editText2"
android:singleLine="true" />

睡精灵 2016-06-07
  • 打赏
  • 举报
回复
引用 4 楼 tg01 的回复:
[quote=引用 3 楼 shuijinglingsos 的回复:] [quote=引用 2 楼 tg01 的回复:] [quote=引用 1 楼 shuijinglingsos 的回复:] 在代码中et2.setNextFocusDownId(et1.getId()); 或者在布局文件中使用android:nextFocusDown=""
我读书少,你不要骗我……setNextFocusDownId和nextFocusDown不都是设置手机键盘的下键的吗?我是希望用回车键在两个editText切换焦点[/quote] 你试试不就知道了[/quote] 就是试过了的说... 焦点还是瞬间跳回editText2
 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        e1 = (EditText) findViewById(R.id.editText);
        e2 = (EditText) findViewById(R.id.editText2);
        e2 .setOnKeyListener(new View.OnKeyListener() {

            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if (KeyEvent.KEYCODE_ENTER == keyCode && event.getAction() == KeyEvent.ACTION_DOWN) {

                    e2.setNextFocusDownId(e1.getId());
                    e1.requestFocus();
                    e1.requestFocusFromTouch();

                    return true;
                }
                return false;

            }
        });
    }
我这样写没写错吧?[/quote] 不要设置e2 .setOnKeyListener(),直接e2.setNextFocusDownId(e1.getId());
tg01 2016-06-06
  • 打赏
  • 举报
回复
引用 3 楼 shuijinglingsos 的回复:
[quote=引用 2 楼 tg01 的回复:] [quote=引用 1 楼 shuijinglingsos 的回复:] 在代码中et2.setNextFocusDownId(et1.getId()); 或者在布局文件中使用android:nextFocusDown=""
我读书少,你不要骗我……setNextFocusDownId和nextFocusDown不都是设置手机键盘的下键的吗?我是希望用回车键在两个editText切换焦点[/quote] 你试试不就知道了[/quote] 就是试过了的说... 焦点还是瞬间跳回editText2
 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        e1 = (EditText) findViewById(R.id.editText);
        e2 = (EditText) findViewById(R.id.editText2);
        e2 .setOnKeyListener(new View.OnKeyListener() {

            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if (KeyEvent.KEYCODE_ENTER == keyCode && event.getAction() == KeyEvent.ACTION_DOWN) {

                    e2.setNextFocusDownId(e1.getId());
                    e1.requestFocus();
                    e1.requestFocusFromTouch();

                    return true;
                }
                return false;

            }
        });
    }
我这样写没写错吧?
睡精灵 2016-06-06
  • 打赏
  • 举报
回复
引用 2 楼 tg01 的回复:
[quote=引用 1 楼 shuijinglingsos 的回复:] 在代码中et2.setNextFocusDownId(et1.getId()); 或者在布局文件中使用android:nextFocusDown=""
我读书少,你不要骗我……setNextFocusDownId和nextFocusDown不都是设置手机键盘的下键的吗?我是希望用回车键在两个editText切换焦点[/quote] 你试试不就知道了
tg01 2016-06-06
  • 打赏
  • 举报
回复
引用 1 楼 shuijinglingsos 的回复:
在代码中et2.setNextFocusDownId(et1.getId()); 或者在布局文件中使用android:nextFocusDown=""
我读书少,你不要骗我……setNextFocusDownId和nextFocusDown不都是设置手机键盘的下键的吗?我是希望用回车键在两个editText切换焦点
睡精灵 2016-06-06
  • 打赏
  • 举报
回复
在代码中et2.setNextFocusDownId(et1.getId()); 或者在布局文件中使用android:nextFocusDown=""

80,490

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧