Java 如何添加多个editview以提交到电子邮件意图
我试图有一个以上的编辑文本字段发送通过电子邮件的意图 这段代码会让我更明白我想要完成什么Java 如何添加多个editview以提交到电子邮件意图,java,android,email,android-intent,android-edittext,Java,Android,Email,Android Intent,Android Edittext,我试图有一个以上的编辑文本字段发送通过电子邮件的意图 这段代码会让我更明白我想要完成什么 public class EmailSupport extends Activity { Button buttonSend; String textTo; EditText textSubject; EditText nametext; EditText emailtext; EditText phonetext; EditText topictext; 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是我的电子邮件主题,默认情况下,我也希望通过硬线发送电子邮件地址
将表格发送至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>
}我不确定您想要实现什么,但要改变这一点:
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都存储在自己的字符串中,供您随意使用
从评论中添加内容
简单地组合字符串,这是一种简单的方法:
String message = nametext.getText().toString();
message += "\n" + emailtext.getText().toString();
etc.
其中“\n”是类似于使用Enter的换行符。您可以在字段之间设置更有趣的格式,也许:
message += "\n\nEmail:\n" + emailtext.getText().toString();
但这取决于您。您可以使用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..."));
}
活动
-是您需要存储以发送意图的活动引用。如果在活动
中执行onClick
处理,可以忽略此项,因此我的代码示例中的最后一行如下所示:
startActivity(Intent.createChooser(emailIntent, "Send mail..."));
如果在访问编辑文本视图时开始出现空指针异常,请确保已初始化它们。比如:
@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
im jsut正在尝试发送一封包含姓名、电子邮件、电话、主题、详细信息和文本的邮件。因此,输出将是一个前缀电子邮件地址,主题将是一个字符串,然后消息将包括多个字符串,不仅仅是一个字符串,而是所有的名称、电子邮件等字符串。我用您推荐的内容更新了我的源代码,并添加了我认为可能有用的内容。参见
email.putExtra(Intent.EXTRA_TEXT,xxx)
Stuff我也在处理您推荐的内容,并将以结果回复。这很好,我唯一可以在第一部分应用一个\n方法:\n使其看起来像String message=“\nName:\n”nametext.getText().toString()
当然,您需要在字符串之间添加+
运算符:String message=“\nName:\n”+nametext.getText().toString()
在使用getText().toString()
之前是否初始化了EditText
s?如此按钮Send;字符串textTo;编辑文本主题;编辑文本名称文本;编辑文本电子邮件文本;编辑文本电话文本;编辑文本主题文本;编辑文本细节文本代码>编号,如TextView name TextView=(TextView)findviewbyd(R.id.nametext)代码>和您的其他视图。不,我没有在我的java文件中看到。我想我不明白您所说的需要存储的活动是什么意思,这是指我的主要活动还是指此活动。当单击布局按钮时,此活动确实有一个onclick{
需要创建电子邮件并将其发送到android系统,然后用户单击他们想要的客户端。我已经用您推荐的内容更新了上面的源代码,android emulator现在说没有应用程序执行此操作,它将引用此活动。因此,如果您使用内部类创建单击处理程序(buttonSend.setOnClickListener(新的OnClickListener(){
)-您可以通过使用以下内容获取对活动的引用:YourActivityName.this.startActivity(Intent.createChooser(emailIntent,“发送邮件…”)
这样,您将发送电子邮件活动,Android将建议您选择合适的电子邮件client@JaisonBrooksDevelopmentandroid emulator没有安装电子邮件客户端。这就是它抱怨缺少客户端的原因。在真实设备上,它可以运行,作为替代,您可以在emulator中设置gmail帐户。这将自动自动启用本机电子邮件客户端。您可以通过转到“设置”->“帐户”->“添加帐户”来执行此操作
@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