我想从另一个活动的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 protected]";
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();
}
}
其他活动上的TextView称为“ tvUser”。
我已经解决了这个问题,并设法在一封显示如下内容的电子邮件中得到了结果...
来自:null然后消息键入
但是,当您单击发送电子邮件按钮时,上面看到的代码只会使应用程序崩溃。
您应该通过导致新活动的意图传递字符串。
活动A:
Intent intent = new Intent(this@MainActivity, NewActivity.class);
intent.putExtra("key", yourString);
startActivity(intent);
活动B:
getIntent().getStringExtra("key");
如果两个活动都不相关,则应将该字符串保存在共享的首选项中,以便在需要的地方使用它。