如何更改键盘按钮 "Go" 功能
How do I change keyboard button "Go" functionality
我的应用以用户登录开始。
当用户按下 "Enter" 按钮时(在他在从 sqlite 获取数据的 gridview 上标记自己之后)。该应用程序通过 inflater 打开警报对话框。
if (gridView.isClickable()){
Toast.makeText(getApplicationContext(), "Waiter selected", Toast.LENGTH_LONG).show();
LayoutInflater inflater = getLayoutInflater();
View dialogLayout = inflater.inflate(R.layout.password_dialog, null);
AlertDialog.Builder passwordDialog = new AlertDialog.Builder(MainActivity.this);
XML文件(布局)只有一个编辑文本,用户需要在这个编辑文本上填写
他自己的密码:
passwordDialog.setTitle(getString(R.string.get_id_uniq));
passwordDialog.setMessage(getString(R.string.enter_id));
passwordDialog.setView(dialogLayout);
passwordDialog.setPositiveButton(getString(R.string.next),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
password = input.getText().toString();
现在的问题是,当用户单击编辑文本时,键盘打开并
然后他输入密码,完成后按下 "Go" 按钮
键盘,键盘关闭,但这还不够,现在他需要再次按下警报对话框按钮,然后应用程序才会检查密码是否正确,并将他移至下一个 activity。
我尝试使用 -
android:imeOptions="actionNext"
还有 "Done", "Go" & "Send" , none 帮助。
如何防止双击 2 个不同的按钮并从键盘按钮发送数据并跳过按下对话框按钮的需要?
你可以这样做:
- 将 dialog 类型改为 AlertDialog,而不是 AlertDialog.Builder - 这将允许您关闭(关闭)对话框。
- 使用 setOnEditorActionListener 代替 setPositiveButton
进行输入
- 调用dialog.dismiss();当用户点击键盘上的完成时。
它看起来应该是这样的:
AlertDialog dialog = new AlertDialog.Builder(this).create();//note dialog's type
dialog.setTitle("Let's check it");
EditText input = new EditText(this);
dialog.setView(input);//assume this is your input
input.setOnEditorActionListener(new TextView.OnEditorActionListener() {
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if(actionId == EditorInfo.IME_ACTION_DONE){
//What to do when user clicked Done button
Log.i("user's password:", v.getText().toString());//v.getText().toString(); is what's user has entered
dialog.dismiss();//close Alert Dialog
return true;
}
return false;
}
});
我的应用以用户登录开始。
当用户按下 "Enter" 按钮时(在他在从 sqlite 获取数据的 gridview 上标记自己之后)。该应用程序通过 inflater 打开警报对话框。
if (gridView.isClickable()){
Toast.makeText(getApplicationContext(), "Waiter selected", Toast.LENGTH_LONG).show();
LayoutInflater inflater = getLayoutInflater();
View dialogLayout = inflater.inflate(R.layout.password_dialog, null);
AlertDialog.Builder passwordDialog = new AlertDialog.Builder(MainActivity.this);
XML文件(布局)只有一个编辑文本,用户需要在这个编辑文本上填写
他自己的密码:
passwordDialog.setTitle(getString(R.string.get_id_uniq));
passwordDialog.setMessage(getString(R.string.enter_id));
passwordDialog.setView(dialogLayout);
passwordDialog.setPositiveButton(getString(R.string.next),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
password = input.getText().toString();
现在的问题是,当用户单击编辑文本时,键盘打开并 然后他输入密码,完成后按下 "Go" 按钮 键盘,键盘关闭,但这还不够,现在他需要再次按下警报对话框按钮,然后应用程序才会检查密码是否正确,并将他移至下一个 activity。
我尝试使用 -
android:imeOptions="actionNext"
还有 "Done", "Go" & "Send" , none 帮助。
如何防止双击 2 个不同的按钮并从键盘按钮发送数据并跳过按下对话框按钮的需要?
你可以这样做:
- 将 dialog 类型改为 AlertDialog,而不是 AlertDialog.Builder - 这将允许您关闭(关闭)对话框。
- 使用 setOnEditorActionListener 代替 setPositiveButton 进行输入
- 调用dialog.dismiss();当用户点击键盘上的完成时。
它看起来应该是这样的:
AlertDialog dialog = new AlertDialog.Builder(this).create();//note dialog's type
dialog.setTitle("Let's check it");
EditText input = new EditText(this);
dialog.setView(input);//assume this is your input
input.setOnEditorActionListener(new TextView.OnEditorActionListener() {
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if(actionId == EditorInfo.IME_ACTION_DONE){
//What to do when user clicked Done button
Log.i("user's password:", v.getText().toString());//v.getText().toString(); is what's user has entered
dialog.dismiss();//close Alert Dialog
return true;
}
return false;
}
});