我想在我的Android应用中使用set和get方法。 在MainActivity.java中如果我单击按钮我想在UserEmail.java中设置我的电子邮件变量,然后从PostEmail.java获取它并制作吐司。但就这样,我的吐司是空的。如果我将此toast复制到我的MainActivity.java,它的工作。
代码错误
在null对象引用上的java.lang.String.length()'
MainActivity.java
public class MainActivity extends AppCompatActivity {
public void clickButton(View v) {
String myEmail = "myemail123@gmail.com";
UserEmail userEmail = new UserEmail();
userEmail.setEmail(myEmail);
}
}
UserEmail.java
public class UserEmail {
public String email;
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
PostEmail.java
public class PostEmail extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
UserEmail userEmail = new UserEmail();
Toast.makeText(this,userEmail.getEmail(),Toast.LENGTH_LONG).show();
}
}
答案 0 :(得分:0)
这是因为您在PostEmail活动中初始化UserEmail对象而未设置其电子邮件值(就像您在MainActivity中所做的那样),因此他的电子邮件字符串为空。
答案 1 :(得分:0)
您应该发送"电子邮件"通过意图,像这样:
public void clickButton(View v) {
Context context = v.getContext();
String myEmail = "myemail123@gmail.com";
Intent i = new Intent(context, PostEmail.class);
i.putExtra("EMAIL", myEmail );
startActivity(i);
}
在你的PostEmail活动中,你应该这样做:
protected void onCreate(Bundle savedInstanceState) {
String email = getIntent().getStringExtra("EMAIL");
Toast.makeText(this,email,Toast.LENGTH_LONG).show();
}
当您使用UserEmail userEmail = new UserEmail();
方法onCreate
时,您正在创建一个新的UserEmail实例,这就是为什么您无法收到您之前设置过的电子邮件的原因。< / p>
换句话说,MainActivity中的变量userEmail
和PostEmail中的userEmail
不是同一个实例。
答案 2 :(得分:0)
josemgu91是正确的。
但看起来你想让UserEmail成为MainActivity或全局单例类中的字段,而不是clickButton方法。然后要么将该字段设为公共单例,要么使getter返回UserEmail var或UserEmail var.getEmail()
或使用guisantogui的建议并使用意图传递值,但我会在单独的方法中进行,而不是在cliclListener中。