2016-06-29 15 views
0

私の問題は、2つのEditTextビューを含むログイン画面があることです。ユーザー名を入力してEnterをクリックすると、行が追加されますが、代わりにEditTextパスワードに変更します。誰か助けてくれますか? 1つのラインandroid:inputType="text"(又はanother value)制限するために、入力されたテキストを使用しEnterキーを押してEditTextを変更します

public void onClick(View v){ 

    final TextView user = (TextView)findViewById(R.id.tnome); 
    final TextView pw = (TextView)findViewById(R.id.tpw); 
    if (user.getText().toString().equals("") || pw.getText().toString().equals((""))) { 
     Toast.makeText(MainActivity.this, "Têm de Preencher todos os Campos", Toast.LENGTH_SHORT).show(); 
     user.requestFocus(); 

    }else{ 
     if (user.getText().toString().endsWith(" ")){ 
      user.setText(user.getText().toString().substring(0,user.length()-1)); 
     } 
     user.setText(user.getText().toString().toLowerCase()); 
     if (user.getText().toString().equals("admin") && pw.getText().toString().equals("admin")){ 

      startActivity(new Intent(MainActivity.this,Home.class)); 
      user.setText(""); 
      pw.setText(""); 
     } 
     user.setOnKeyListener(new View.OnKeyListener() { 

      public boolean onKey(View v, int keyCode, KeyEvent event) { 
       // If the event is a key-down event on the "enter" button 
       if ((event.getAction() == KeyEvent.ACTION_DOWN) && 
         (keyCode == KeyEvent.KEYCODE_ENTER)) 
       { 
        // Perform action on Enter key press 
        user.clearFocus(); 
        pw.requestFocus(); 
        return true; 
       } 
       return false; 
      } 
     }); 

     pw.setOnKeyListener(new View.OnKeyListener() { 

      public boolean onKey(View v, int keyCode, KeyEvent event) { 

       if ((event.getAction() == KeyEvent.ACTION_DOWN) && 
         (keyCode == KeyEvent.KEYCODE_ENTER)) 
       { 
        // Perform action on Enter key press 
        // check for username - password correctness here 
        return true; 
       } 
       return false; 
      } 
     }); 
    } 
} 

答えて

0

通常、入力コントロールがレイアウトファイル(resx)にレイアウトされている場合、Enterキーを押すとフォーカスが次のフィールドに移動します。この作業を行うためのカスタム処理コードは必要ありません。つまり、Enterキーを押してパスワードフィールドにフォーカスを合わせるには、ユーザー名フィールドにコードを入力する必要はありません。

<requestFocus />タグを使用して、ページがロードされたときにフィールドにフォーカスを強制することができます。

<EditText 
    android:id="@+id/etUserName" 
    android:layout_margin="5dp" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:inputType="textCapWords" 
    android:focusable="true" 
    > 
    <requestFocus /> 
</EditText> 


<EditText 
    android:id="@+id/etPassword" 
    android:layout_margin="5dp" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:inputType="textPassword" 
    android:cursorVisible="true" 
    android:hint="Password" 
    /> 

リスナーのワイヤーアップが機能していない可能性が高い理由は、ボタンがクリックされたときにコードのみ(それはonClick機能にあります)を実行していることです。ページの初期化中にパスワード(pw)フィールドのワイヤアップを実行します - onFinishInflate()が良いスポットです。

ただし、キーリスナーをワイヤーアップして、パスワードフィールドのEnterキーを押してデータを送信する(または検証する)ことができます。

+0

Thx it works、cya –

関連する問題