如果我在启动应用程序时按任何字母/数字,EditText
会自动激活并开始搜索相应的字符串。
例如,在应用启动时,如果用户错误地按下字母“A”,EditText
会获取该字母并显示从“A”开始的所有结果。
实际上它应该被激活,并且应该显示相应的结果当且仅当用户点击EditText
时,才会显示。
我在main.xml
android:focusable="false"
android:clickable="true"
并在activity class
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lsym = (ListView) findViewById(R.id.lsym);
edsearch = (EditText) findViewById(R.id.edsearch);
dbM = new DbManager(this);
symbolarr = dbM.getSymbol();
edsearch.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
edsearch.setFocusable(true);
edsearch.requestFocus();
}
});
edsearch.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start,
int before, int count) {
//FILTERING LIST
}
});
}
,但它会将焦点永远地从EditText
移开,即使点击它也不会再次获得焦点。
我做错了什么?
任何帮助都将有益于生命!
答案 0 :(得分:0)
您应该使用以下属性进行父布局
android:focusable="true"
android:focusableInTouchMode="true"
答案 1 :(得分:0)
您的main.xml文件包含
<requestFocus/>
标签或在编程代码中启用它 你可以用
requestFocus()方法
答案 2 :(得分:0)
当我第一次说明开发时,我的一个应用程序中出现了这个问题。现在我不明白你问题的本质,但这对我有用。
这是一个修复,我可能会添加并且只是阻止软键盘在活动启动时出现。这将防止活动启动后意外的键输入。
将此添加到活动的相关java代码中。
private void hideKeyboard() {
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
}