如何在 Android 应用程序中为联系我们表单设置 onClickListener

Posted

技术标签:

【中文标题】如何在 Android 应用程序中为联系我们表单设置 onClickListener【英文标题】:How to set onClickListner for contact us form in android app 【发布时间】:2016-11-12 12:57:49 【问题描述】:

我在操作栏上为 android 应用程序创建了一个联系我们的表单,我已将它添加到我的应用程序中,它打开并且看起来非常好。我唯一找不到的是如何为提交按钮设置onClickListner,以便在单击提交按钮后,来自表单的消息应该直接发送到我的电子邮件收件箱。请帮忙,以下是我的代码。

menu_main.xml

 <item
        android:id="@+id/contact_us"
        android:title="Contact us"
        android:showAsAction="ifRoom"
        android:icon="@drawable/contact_us"
        />

联系布局

contact_us.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_
        android:layout_
        android:background="#ffffff"
        android:orientation="vertical"
        android:padding="16dp">

        <TextView
            android:id="@+id/contact_form_title"
            android:layout_
            android:layout_
            android:layout_gravity="center_horizontal"
            android:layout_marginBottom="16dp"
            android:layout_marginTop="5dp"
            android:text="contact us"
            android:textColor="#000000"
            android:textSize="20sp"
            android:typeface="serif" />

        <EditText
            android:layout_
            android:layout_
            android:backgroundTint="@color/colorPrimaryDark"
            android:hint="name"
            android:inputType="textPersonName" />

        <EditText
            android:layout_
            android:layout_
            android:layout_marginBottom="10dp"
            android:layout_marginTop="10dp"
            android:backgroundTint="@color/colorPrimaryDark"
            android:hint="Email"
            android:inputType="textEmailAddress" />

    <EditText
        android:layout_
        android:layout_
        android:backgroundTint="@color/colorPrimaryDark"
        android:hint="phone number"
        android:inputType="phone" />

    <EditText
        android:layout_
        android:layout_
        android:layout_marginBottom="10dp"
        android:layout_marginTop="10dp"
        android:backgroundTint="@color/colorPrimaryDark"
        android:gravity="top"
        android:hint="your Message"
        android:fitsSystemWindows="true"
        android:breakStrategy="balanced"
        android:inputType="textMultiLine"
        android:singleLine="false"
        android:padding="5dp" />

    <Button
        android:layout_
        android:layout_
        android:layout_gravity="center_horizontal"
        android:background="@color/colorPrimaryDark"
        android:elevation="4dp"
        android:paddingLeft="70dp"
        android:paddingRight="70dp"
        android:text="Submit"
        android:textColor="#fff" />
</LinearLayout>

MainActivity.java

@Override
    public boolean onCreateOptionsMenu(Menu menu) 
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    

    public boolean onOptionsItemSelected(MenuItem item) 
        switch (item.getItemId()) 
case R.id.contact_us: 
                setContentView(R.layout.contact_us);
                return true;
            
            
            return super.onOptionsItemSelected(item);

【问题讨论】:

【参考方案1】:

您可以尝试像这样从 XML 添加 onClick:

<Button
        android:id="@+id/button1"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:onClick="clickEvent"
        android:text="Button 1" />
<Button
        android:id="@+id/button2"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:onClick="clickEvent"
        android:text="Button 2" />

然后进入主要活动:

public void clickEvent(View v) 
        if (v.getId() == R.id.button1) 
            Toast.makeText(MainActivity.this, "you click on button 1",
                    Toast.LENGTH_SHORT).show();
        

        if (v.getId() == R.id.button2) 
            Toast.makeText(MainActivity.this, "you click on button 2",
                    Toast.LENGTH_SHORT).show();
        
    

【讨论】:

【参考方案2】:

在 MainActivity 的 onCreate 方法上添加这段代码:

final Button item = (Button) findViewById(R.id.btn);
item.setOnClickListener(new OnClickListener() 
    @Override
    public void onClick() 

    
);

此代码添加到您的 xml 文档中的 Button 属性:

android:id="@+id/btn"

【讨论】:

【参考方案3】:

通过将android:id="@+id/submit_button 添加到 xml 文档中的 Button 标记,为您的按钮分配一个 ID。

然后,在你的activity的onCreate方法中,添加如下代码

Button submitButton = (Button) findViewById(R.id.submit_button);
submitButton.setOnClickListener(new OnClickListener() 
    @Override
    public void onClick() 
        Intent intent = new Intent(Intent.ACTION_SEND);
        intent.setType("message/rfc822");
        intent.putExtra(Intent.EXTRA_EMAIL  , new String[]"recipient@example.com");
        intent.putExtra(Intent.EXTRA_SUBJECT, "subject of email");
        intent.putExtra(Intent.EXTRA_TEXT   , "body of email");
        try 
            startActivity(Intent.createChooser(intent, "Send mail"));
         catch (android.content.ActivityNotFoundException e) 
            Toast.makeText(MyActivity.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
        
    
);

不用说,替换 id、subject 和 body 以满足您的需求。

希望对你有帮助

【讨论】:

使用此代码,应用程序提供了手机上所有电子邮件客户端的选项,但我想要的是代替外部电子邮件客户端,应用程序应该能够直接从应用程序本身发送电子邮件。

以上是关于如何在 Android 应用程序中为联系我们表单设置 onClickListener的主要内容,如果未能解决你的问题,请参考以下文章

在 OnCreate() Android 中为联系人调用 onActivityResult

如何从联系人快捷菜单中为我的应用程序添加链接

Android,如何获取 Facebook/Twitter/etc 联系人照片

如何使用 Flutter Web 通过联系表单发送电子邮件?

联系表单提交后如何重定向到感谢页面 - Wordpress 高级主题联系我们 php 模板 [关闭]

如何在aws设备场中为android espresso每次测试运行后清除设备数据