想要将焦点从一个EditText更改为另一个时,请关闭力

时间:2011-07-25 18:40:45

标签: java android focus android-edittext

这适用于我的Android应用。我有两个EditText字段设置为最多可以在每个字段中输入一个字符。一旦用户输入第一个字符,我希望焦点自动跳转到第二个EditText字段。我在第一个编辑文本上设置了一个addTextChangedListener,让它在文本字符串为>时监听。 1.然后我将请求焦点调用到第二个编辑文本。但是,当我在第一个“编辑文本”框中输入字符时,我会继续接收力。从我在StackOverflow上看到的,这应该工作。任何人都知道为什么不呢?我在下面发布了相关代码。感谢。

    LinearLayout llview = new LinearLayout(this);
    llview.setOrientation(LinearLayout.VERTICAL);

    EditText character1 = new EditText(this);
    EditText character2 = new EditText(this);
    character2.setId(2);

    character1.addTextChangedListener(new TextWatcher(){

        EditText character2 = (EditText) findViewById(2);

        @Override
        public void afterTextChanged(Editable s) {

            if(s.length()>0)
            {
                character2.requestFocus();
            }
        }

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

        @Override
        public void onTextChanged(CharSequence s, int start, int before,int count) {}

    }); 
           llview.addView(character1);
           llview.addView(character2);
           this.setContentView(llview);

1 个答案:

答案 0 :(得分:0)

我不确定您是否发布了所有相关代码。您似乎以编程方式构建视图层次结构(而不​​是使用布局文件),但是没有代码显示将character1和character2插入视图层次结构的位置。如果您发布了用于构建视图层次结构的代码,将会很有帮助。

此外,到目前为止您尝试过哪些调试步骤?在调用方法时,是否设置了断点以确认变量不是空指针?你做过堆栈跟踪吗?

如果我只想根据您发布的代码段进行猜测,那么我必须猜测您没有将character1和character2插入到您的活动视图层次结构中,而findViewById(2)只是返回null。您是否检查过findViewById(2)实际上是否返回了null以外的其他内容?