android - 动态添加视图后,按钮 onClick 不会触发
问题描述
我的活动中有一个 EditText,每次用户按下键盘上的 Enter 按钮时,OnEditorActionListener
都会将另一个 EditText 添加到 LinearLayout。
问题是添加这些视图后,按钮 onClick 不起作用。为什么会发生这种情况以及如何解决?
按钮onClick
:
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(NewExpenseActivity.this, "Saved", Toast.LENGTH_SHORT).show();
}
});
.
private TextView.OnEditorActionListener editorActionListener = new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) {
if (actionId == EditorInfo.IME_ACTION_NEXT) {
createNewEditText();
}
return false;
}
};
.
public void createNewEditText() {
textInputLayout = new TextInputLayout(this);
textInputLayout.setPadding(padding_in_px_16, padding_in_px_8, padding_in_px_16, padding_in_px_8);
editText = new EditText(NewExpenseActivity.this);
editText.setId(id);
editText.setHint("Enter Name");
editText.setInputType(InputType.TYPE_CLASS_TEXT);
editText.setOnEditorActionListener(editorActionListener);
editText.setImeOptions(EditorInfo.IME_ACTION_NEXT);
textInputLayout.addView(editText);
ITEM_MAP.put("Key" + idNum, id);
idNum++;
linearEtList.addView(textInputLayout);
}
解决方案
尝试使用:-
private TextView.OnEditorActionListener editorActionListener = new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) {
if (event != null) {
createNewEditText();
}
return false;
}
}
因为 :-
actionId int:动作的标识符。这将是您提供的标识符,或者 EditorInfo#IME_NULL 如果由于按下回车键而被调用。
事件如果由回车键触发,这是事件;否则,这是空的。
并且 setImeOptions(EditorInfo.IME_ACTION_NEXT) 添加/设置软键盘以具有NEXT ( --->|
) 按钮。仅当使用该软按钮时,actionId == IME_ACTION_NEXT。
像
如果你想要两者,那么你可以做
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_NEXT || (event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
addEditText();
}
return false;
}
推荐阅读
- sql - 使用 Azure DevOps 的多租户数据库部署
- javascript - 使用从 JSON 数据中提取的 URL 在 HTML 中设置 backgroundImage
- jquery - Bulma CSS 框架中的下拉实时搜索
- react-native - React Native 获取数组 json 数据
- python - Tkinter - Toplevel()窗口的定位不如预期
- python - 从另一个文件导入时在python中找不到模块错误?
- laravel - 您将如何处理 Livewire 弹出框?
- java - 休眠数据缓存:添加时未更新 Objet.list
- c# - 简化更新方法切换语句
- java - 将 void 方法的结果捕获到输出文件中