2015-11-25 38 views
2

我的应用程序以用户登录开始。如何更改键盘按钮“开始”功能

当用户按下“Enter”按钮(在他标记自己从gridite获取数据的sqlite后)。该应用程序通过inflater打开alertdialog。

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文件(版面)只用editext,在此editext用户需要填写

自己的密码:

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(); 

和现在的问题,当用户点击editext的键盘打开和 然后他把他的密码,当他完成并按下键盘上的“Go”按钮,键盘关闭但不够的原因,现在他需要再次按下alertdialog按钮,然后应用程序将检查是否密码是正确的,并将他移动到下一个活动。

我试图用 - android:imeOptions="actionNext"

而且他们的 “完成”, “去” & “发送”,没有帮助。

我该如何防止双击2个不同的按钮并从键盘按钮发送数据并跳过需要按下对话框按钮?

回答

1

你可以这样说:

  1. 变化对话框类型AlertDialog,而不是AlertDialog.Builder - 这将让你解雇(关闭)的对话框。
  2. 使用对您输入setOnEditorActionListener,而不是setPositiveButton
  3. 呼叫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; 
     } 
    }); 
+1

太好了!它的工作!非常感谢! –