1

ユーザーがボタンをクリックすると、ユーザーに電子メール アドレスを要求するアラートが作成されるアプリケーションを使用しています。このアラートには、EditText と 2 つのボタンが含まれています。この EditText の入力タイプを実行時に email に変更したいのですが、変更されません。コードは以下にあります。

編集: setRawInputType が setInputType に変更されました。これにより、入力タイプがメールアドレスに変更されましたが、キーボードは実際には変更されません。これがどのように機能するかについて、おそらく何かが欠けていますか?

    AlertDialog.Builder alert = new AlertDialog.Builder(this);

    alert.setTitle("Title");
    alert.setMessage("Email Address:");

    // Set an EditText view to get user input 
    final EditText input = new EditText(this);
    input.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
    alert.setView(input);

    alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {
      String value = input.getText().toString();;
      Intent i = new Intent(Intent.ACTION_SEND);
      i.setType("message/rfc822");
      i.putExtra(Intent.EXTRA_EMAIL  , value);
      i.putExtra(Intent.EXTRA_SUBJECT, "subject of email");
      i.putExtra(Intent.EXTRA_TEXT   , "body of email");
      try {
          startActivity(Intent.createChooser(i, "Send mail..."));
      } catch (android.content.ActivityNotFoundException ex) {
          Toast.makeText(getBaseContext(), "Please enter a valid number",
                    Toast.LENGTH_LONG).show();
      }
      }
    });

    alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog, int whichButton) {
        // Canceled.
      }
    });

    alert.show();
4

2 に答える 2

2

私はそれをたくさんいじった後、これを自分で理解しました。実際に入力タイプを変更するには、次のものを使用する必要がありました。

input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
于 2012-09-05T15:40:02.603 に答える
0

setInputType代わりに使用してみてくださいsetRawInputType

こちらのドキュメントをご覧ください

inputTypeに定義されている定数を使用して、コンテンツのタイプを設定します。これにより、setKeyListener(KeyListener)を呼び出すことにより、キーリスナーの変更が処理されます。

生はしませんが

于 2012-09-05T14:13:24.983 に答える