这适用于我的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);
答案 0 :(得分:0)
我不确定您是否发布了所有相关代码。您似乎以编程方式构建视图层次结构(而不是使用布局文件),但是没有代码显示将character1和character2插入视图层次结构的位置。如果您发布了用于构建视图层次结构的代码,将会很有帮助。
此外,到目前为止您尝试过哪些调试步骤?在调用方法时,是否设置了断点以确认变量不是空指针?你做过堆栈跟踪吗?
如果我只想根据您发布的代码段进行猜测,那么我必须猜测您没有将character1和character2插入到您的活动视图层次结构中,而findViewById(2)只是返回null。您是否检查过findViewById(2)实际上是否返回了null以外的其他内容?