使用 Kotlin 将调查中的所有问题和答案一次性 Activity 发送到电子邮件

Get all questions and answers from survey in one Activity to email with Kotlin

我想制作一个调查应用程序,它将在电子邮件中发送所有 TextView 内容及其 RadioButton 回复。我有一个自动填充电子邮件的 Intent 设置,但我无法让它添加多个字符串。

这是我的 Activity xml 文件:

<LinearLayout
    android:id="@+id/layout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/logo2"
        android:layout_width="match_parent"
        android:layout_height="91dp"
        android:contentDescription="logo2"
        app:srcCompat="@drawable/logo" />

    <RadioGroup
        android:id="@+id/group1"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <TextView
            android:id="@+id/question1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:backgroundTint="#FFFFFF"
            android:clickable="false"
            android:cursorVisible="false"
            android:ems="10"
            android:focusable="false"
            android:focusableInTouchMode="false"
            android:inputType="textMultiLine"
            android:text="example question1"
            android:textAlignment="center"
            app:layout_constrainedHeight="true"
            app:layout_constrainedWidth="true"
            tools:layout_editor_absoluteX="35dp"
            tools:layout_editor_absoluteY="186dp" />

        <RadioButton
            android:id="@+id/radioButton1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:clickable="true"
            android:text="Yes"
            tools:layout_editor_absoluteX="113dp"
            tools:layout_editor_absoluteY="244dp" />

        <RadioButton
            android:id="@+id/radioButton2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:clickable="true"
            android:text="No"
            tools:layout_editor_absoluteX="113dp"
            tools:layout_editor_absoluteY="276dp" />
    </RadioGroup>

    <RadioGroup
        android:id="@+id/group2"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <TextView
            android:id="@+id/question2"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:backgroundTint="#FFFFFF"
            android:clickable="false"
            android:ems="10"
            android:focusable="false"
            android:focusableInTouchMode="false"
            android:inputType="textMultiLine"
            android:text="example question2 "
            android:textAlignment="center"
            app:layout_constrainedHeight="true"
            app:layout_constrainedWidth="true"
            tools:layout_editor_absoluteX="35dp"
            tools:layout_editor_absoluteY="186dp" />

        <RadioButton
            android:id="@+id/radioButton3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:clickable="true"
            android:text="Yes"
            tools:layout_editor_absoluteX="113dp"
            tools:layout_editor_absoluteY="244dp" />

        <RadioButton
            android:id="@+id/radioButton4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:clickable="true"
            android:text="No"
            tools:layout_editor_absoluteX="113dp"
            tools:layout_editor_absoluteY="276dp" />
    </RadioGroup>

    <RadioGroup
        android:id="@+id/group3"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <TextView
            android:id="@+id/question3"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:backgroundTint="#FFFFFF"
            android:clickable="false"
            android:ems="10"
            android:focusable="false"
            android:focusableInTouchMode="false"
            android:inputType="textMultiLine"
            android:text="example question3"
            android:textAlignment="center"
            app:layout_constrainedHeight="true"
            app:layout_constrainedWidth="true"
            tools:layout_editor_absoluteX="35dp"
            tools:layout_editor_absoluteY="186dp" />

        <RadioButton
            android:id="@+id/radioButton5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:clickable="true"
            android:text="Yes"
            tools:layout_editor_absoluteX="113dp"
            tools:layout_editor_absoluteY="244dp" />

        <RadioButton
            android:id="@+id/radioButton6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:clickable="true"
            android:text="No"
            tools:layout_editor_absoluteX="113dp"
            tools:layout_editor_absoluteY="276dp" />
    </RadioGroup>

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|center"
        android:clickable="true"
        android:onClick="submit"
        android:text="submit"
        tools:ignore="OnClick" />

</LinearLayout>

这是我的 Activity Kotlin 文件:

class MainActivity2 : AppCompatActivity() {

    @SuppressLint("WrongViewCast")
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)
        val editTextView:TextView = findViewById(R.id.question1)
        val editTextView1:TextView = findViewById(R.id.question2)
        val editTextView2:TextView = findViewById(R.id.question3)
        val RadioButton:RadioButton = findViewById(R.id.radioButton1)
        val RadioButton1:RadioButton = findViewById(R.id.radioButton2)
        val RadioButton2:RadioButton = findViewById(R.id.radioButton3)

        // get reference to button
        val btn_click_me = findViewById(R.id.button3) as Button
        // set on-click listener
        btn_click_me.setOnClickListener {
            val message = editTextView.getText().toString()
            val message1 = editTextView1.getText().toString()
            val message2 = editTextView2.getText().toString()
            val email = Intent(Intent.ACTION_SEND_MULTIPLE)
            email.putExtra(Intent.EXTRA_EMAIL, arrayOf("email@gmail.com"))
            email.putExtra(Intent.EXTRA_SUBJECT, "test")
            email.putExtra(Intent.EXTRA_TEXT, message)
            email.putExtra(Intent.EXTRA_TEXT, message1)
            email.type = "message/rfc822"
            startActivity(Intent.createChooser(email, "Choose an Email client :"))
        }
    }
}

更好的方法是从所有消息创建一个字符串,然后将该字符串放入 Intent

   btn_click_me.setOnClickListener {
    val message = editTextView.getText().toString()
    val message1 = editTextView1.getText().toString()
    val message2 = editTextView2.getText().toString()

    val allMessages = buildString{
        append(message)
        append("\n") // adds new line remove it if not required.
        append(message1)
        append("\n")
        append(message2)
    }


    val email = Intent(Intent.ACTION_SEND_MULTIPLE)
    email.putExtra(Intent.EXTRA_EMAIL, arrayOf("email@gmail.com"))
    email.putExtra(Intent.EXTRA_SUBJECT, "test")
    email.putExtra(Intent.EXTRA_TEXT, allMessages)
    email.type = "message/rfc822"
    startActivity(Intent.createChooser(email, "Choose an Email client :"))
}