Java 在另一个活动中从TextView获取值

Java 在另一个活动中从TextView获取值,java,android,jakarta-mail,Java,Android,Jakarta Mail,我想从另一个活动的TextView中获取值。TextView实际上是从数据库中提取一个值,并显示登录的用户名 我正在设置一个联系人电子邮件活动,我让它工作得很好,但我正在努力从TextView中提取用户名并将其合并到电子邮件中。这是联系活动的代码 package com.example.empireuslforms; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import androi

我想从另一个活动的TextView中获取值。TextView实际上是从数据库中提取一个值,并显示登录的用户名

我正在设置一个联系人电子邮件活动,我让它工作得很好,但我正在努力从TextView中提取用户名并将其合并到电子邮件中。这是联系活动的代码

package com.example.empireuslforms;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;


public class GeneralEmailActivity extends AppCompatActivity {

    public EditText mEmailText;
    public Button mSendEmail;
    public TextView mUserName;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_general_email);

        mUserName = (TextView)findViewById(R.id.tvUser);
        mEmailText = (EditText)findViewById(R.id.etEmailText);
        mSendEmail = (Button)findViewById(R.id.btnEmailSend);
        mSendEmail.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                sendMail();
            }
        });


    }

    private void sendMail() {

        String user_name = mUserName.getText().toString();
        String mail = "email@email.com";
        String message = "From: " + user_name + "\n" + mEmailText.getText().toString();
        String subject = "Empire Forms App Contact";

        //Send Email
        JavaMailAPI javaMailAPI = new JavaMailAPI(this, mail, subject, message);

        javaMailAPI.execute();
    }
}
另一个活动的文本视图称为“tvUser”

我一直在玩这个,并设法得到一个结果,在电子邮件中说

From:null 然后输入消息


但是您在上面看到的代码只是在单击“发送电子邮件”按钮时使应用程序崩溃。

您应该将字符串传递给导致新活动的意图

活动A

Intent intent = new Intent(this@MainActivity, NewActivity.class);
intent.putExtra("key", yourString); //or textView.getText().toString();
startActivity(intent);
getIntent().getStringExtra("key");
创建时的活动B

Intent intent = new Intent(this@MainActivity, NewActivity.class);
intent.putExtra("key", yourString); //or textView.getText().toString();
startActivity(intent);
getIntent().getStringExtra("key");

如果这两个活动的目的不相关,则应考虑将该字符串保存在共享首选项中,以便在需要时使用。

“TextView实际上是从数据库中提取一个值,并显示登录的用户名。”-那么,你就不能在你的另一个
文本视图中执行同样的操作吗?
…?我不想再次显示用户名,而是将其作为字符串与电子邮件一起发送。我试着像你说的那样做,但失败了,我认为从TextView中获取一个值会更容易。“我不想再次显示用户名,而是将其作为字符串与电子邮件一起发送”-但它是相同的值,对吗?与尝试在另一个活动中访问视图相比,使用此方法更容易(老实说,这是由于以下几个原因而不明智的做法)。您想将该字符串传递给前一个活动还是启动另一个活动并传递字符串在此处您可以了解有关通过活动传递数据的更多信息: