1

インテントを介して電子メールで送信するために、複数の Edittext フィールドを設定しようとしています。

コードは、私が達成しようとしていることをより理解し、

public class EmailSupport extends Activity {

  Button buttonSend;
  String textTo;
  EditText textSubject;
  EditText nametext;
  EditText emailtext;
  EditText phonetext;
  EditText topictext;
  EditText detailstext;


@Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.email_form_to_support);

        public void onClick(View v) {
        String[] recipients = new String[]{"email@email.com", "email@email.com",};
          String subject = textSubject.getText().toString();
          String name = nametext.getText().toString();
          String emails = emailtext.getText().toString();
          String phone = phonetext.getText().toString();
          String topic = topictext.getText().toString();
          String details = detailstext.getText().toString();


          Intent email = new Intent(Intent.ACTION_SEND);
          email.putExtra(android.content.Intent.EXTRA_EMAIL, recipients);
          email.putExtra(Intent.EXTRA_SUBJECT, subject);
          email.putExtra(Intent.EXTRA_TEXT, name);
          email.putExtra(Intent.EXTRA_TEXT, emails);
          email.putExtra(Intent.EXTRA_TEXT, phone);
          email.putExtra(Intent.EXTRA_TEXT, topic);
          email.putExtra(Intent.EXTRA_TEXT, details);

以下のレイアウト ファイルに示すように、すべての edittext 入力を組み込み、電子メールのメッセージ テキストに基本的に追加する方法を知る必要があります。私のトピック edittext は電子メールの件名であり、デフォルトで送信する電子メールアドレスもハードラインにしたいと考えています。

email_form_to_support.xml

  <?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/name" />


    <EditText
        android:id="@+id/nametext"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/email"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/email" />



    <EditText
        android:id="@+id/emailtext"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="top"
        android:minLines="1"
        android:scrollbars="vertical" />

<TextView
    android:id="@+id/phone"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/phone" />


    <EditText
        android:id="@+id/phonetext"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="top"
        android:maxLines="8"
        android:minLines="1"
        android:scrollbars="vertical" />

    <TextView
        android:id="@+id/topic"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/topic" />


    <EditText
        android:id="@+id/topictext"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="top"
        android:maxLines="3"
        android:minLines="1"
        android:scrollbars="vertical" />

    <TextView
        android:id="@+id/details"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/details" />


    <EditText
        android:id="@+id/detailstext"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="top"
        android:maxLines="8"
        android:minLines="1"
        android:scrollbars="vertical" />


    <Button
        android:id="@+id/submit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="@string/submit" />

</LinearLayout>

どんな助けでも感謝します。シンプルなものが欠けているような気がしますが、間違っているかもしれません。これまでのところ、ソースのこのメソッドでは、文字列メッセージでエラーが発生しています = xxxtext.getText().toString(); 何度かあるから。それぞれに何を入れたらいいのかわからない。

Pavel Dudka によると、ソースをこれに変更することをお勧めします

 public class EmailSupport extends Activity {

Button buttonSend;
String textTo;
EditText textSubject;
EditText nametext;
EditText emailtext;
EditText phonetext;
EditText topictext;
EditText detailstext;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.email_form_to_support);

    buttonSend = (Button) findViewById(R.id.submit);
    textTo = (String) getString(R.string.to);
    textSubject = (EditText) findViewById(R.id.topictext);
    nametext = (EditText) findViewById(R.id.nametext);
    emailtext = (EditText) findViewById(R.id.emailtext);
    phonetext = (EditText) findViewById(R.id.phonetext);
    topictext = (EditText) findViewById(R.id.topictext);
    detailstext = (EditText) findViewById(R.id.detailstext);

    buttonSend.setOnClickListener(new OnClickListener() {



        public void onClick(View v) {

            StringBuilder emailBodyBuilder = new StringBuilder();

            emailBodyBuilder.append(textSubject.getText().toString());
            emailBodyBuilder.append("\n");
            emailBodyBuilder.append(nametext.getText().toString());
            emailBodyBuilder.append("\n");
            emailBodyBuilder.append(emailtext.getText().toString());
            emailBodyBuilder.append("\n");
            emailBodyBuilder.append(topictext.getText().toString());
            emailBodyBuilder.append("\n");
            emailBodyBuilder.append(phonetext.getText().toString());
            emailBodyBuilder.append("\n");
            emailBodyBuilder.append(detailstext.getText().toString());

            final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
            emailIntent.setType("plain/text");
            emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new  String[]{"email1@domen.com", "email2@domen.com"});
            emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, textSubject.getText().toString());
            emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, emailBodyBuilder.toString());
            startActivity(Intent.createChooser(emailIntent, "Send mail..."));
        }
    });
}   

}

4

2 に答える 2

1

あなたが何を達成しようとしているのかはわかりませんが、これを変更してください:

    public void onClick(View v) {
    String[] recipients = new String[]{"email@email.com", "",};
      String subject = textSubject.getText().toString();
      String message = nametext.getText().toString();
      String message = textMessage.getText().toString();
      String message = textMessage.getText().toString();
      String message = textMessage.getText().toString();

これに:

public void onClick(View v) {
    String[] recipients = new String[]{"email@email.com", "email2@email.com"};
    String subject = textSubject.getText().toString();
    String name = nametext.getText().toString();
    String email = emailtext.getText().toString();
    String phone = phonetext.getText().toString();
    String topics = topicstext.getText().toString();
    String details = deatilstext.getText().toString();

    // Do something with this Strings
}

ここでは、各 EditText が独自の文字列に格納されており、自由に使用できます。

コメントからの追加

文字列を組み合わせるだけです。これは簡単な方法の 1 つです。

String message = nametext.getText().toString();
message += "\n" + emailtext.getText().toString();
etc.

「\n」は、使用するような改行Enterです。おそらく、フィールド間にもっと興味深いフォーマットを設定できます。

message += "\n\nEmail:\n" + emailtext.getText().toString();

しかし、それはあなた次第です。

于 2012-07-27T21:38:37.020 に答える
1

StringBuilder を使用してメール本文を作成できます。次のコードの使用を検討してください。

public void onClick(View v) {

    StringBuilder emailBodyBuilder = new StringBuilder();

    emailBodyBuilder.append(textSubject.getText().toString());
    emailBodyBuilder.append("\n");
    emailBodyBuilder.append(nametext.getText().toString());
    emailBodyBuilder.append("\n");
    emailBodyBuilder.append(emailtext.getText().toString());
    emailBodyBuilder.append("\n");
    emailBodyBuilder.append(topicstext.getText().toString());
    emailBodyBuilder.append("\n");
    emailBodyBuilder.append(phonetext.getText().toString());
    emailBodyBuilder.append("\n");
    emailBodyBuilder.append(deatilstext.getText().toString());

    final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
    emailIntent.setType("plain/text");
    emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"email1@domen.com", "email2@domen.com"});
    emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, textSubject.getText().toString());
    emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, emailBodyBuilder.toString());
    activity.startActivity(Intent.createChooser(emailIntent, "Send mail..."));
}

activity- インテントを送信できるようにするために保存する必要があるアクティビティ参照です。onClick内で処理を実行する場合はActivity、これを省略できるため、コード サンプルの最後の行は次のようになります。

startActivity(Intent.createChooser(emailIntent, "Send mail..."));

エディット テキスト ビューにアクセスしているときに NullPointer 例外が発生し始めた場合は、それらが初期化されていることを確認してください。何かのようなもの:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.email_form_to_support);
    textSubject = (EditText)findViewById(R.id.email);
    ...//and so forth
于 2012-07-27T21:57:28.777 に答える