如何在Android上以编程方式提交EditText ?



我有一个包含EditTextListView的活动。EditText.TextChangedListener的实现是在用户输入文本时从数据库中填充ListView

我想实现ListView.OnItemClickListener在这样一种方式,它有相同的效果,按下提交在软键盘:当用户选择一个条目在ListView,软键盘消失,EditText失去焦点。

// MainActivity.java
public class MainActivity extends AppCompatActivity {
EditText myEditText;
ListView myListView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myEditText = findViewById(R.id.my_edit_text);
myEditText.setOnTextChangedListener(
(s, start, before, count) -> populateMyListView(s)
);

myListView = findViewById(R.id.my_list_view);    
myListView.setOnItemClickListener(
(parent, view, position, id) -> submitMyEditText()
);
}
}

我的问题是,你将如何实现submitMyEditText()?

试试这个。如果出现错误,请在此处注释。

public void submitMyEditText(View view,EditText myEditText){
hideSoftKeyBoard(view.getContext(),myEditText);
myEditText.clearFocus();
}

在公共类中为hole项目创建这个函数

public static void hideSoftKeyBoard(Context context,View view){
InputMethodManager imm = (InputMethodManager) context.getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
} 

所以实际上在Android中EditText并没有失去隐藏软键盘的重点。它保持焦点,但不再显示键盘。选择让它失去焦点并没有什么错,但如果你这样做,行为就会不匹配。

要清除焦点,使用editText.clearFocus()。

隐藏键盘,使用

InputMethodManager imm = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);

最新更新