java - 在我的应用程序的第二个 Activity 中显示 "Happy birthday null"

标签 java android android-studio android-developer-api

主要 Activity `公共(public)类 MainActivity 扩展 AppCompatActivity {

private Object Context;
public static final String MSG="com.mp.exampleapp.ORDER";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

}

public void createBirthdayCard(View view) {
    EditText text = (EditText)findViewById(R.id.nameInput);
    String str = text.getText().toString();

    Toast.makeText(this, "Button was clicked "+str,Toast.LENGTH_LONG).show();
    getIntent().putExtra(MSG,str);
    startActivity(new Intent(this,birthdaygreeting.class)) ;

    ImageView image=(ImageView) findViewById(R.id.cake);
    image.setImageResource(R.drawable.wish);
}

`第二个 Activity

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_birthdaygreeting);


     Intent intent = getIntent();
    String msg = "HAPPY BIRTHDAY "+intent.getStringExtra(MainActivity.MSG);
    // receive the value by getStringExtra() method
    // and key must be same which is send by first activity
    TextView textView= (TextView)findViewById(R.id.textView2);
   textView.setText(msg);

}

运行此程序后 - 单击按钮后 - 显示的消息是“生日快乐 null”。我不知道出了什么问题。

最佳答案

出了什么问题?


您传递 put extra 的地方位于 getIntent() 中。这意味着您正在为上一个 Activity 提供额外的 Intent 。在这种情况下,当您返回并获得该额外的 Intent 时,您将获得它。但不会在下一个 Activity 中获得。现在您得到 null,因为该 Activity 不存在该额外内容。所以,它为空。

如何解决?


而不是使用这个

public void createBirthdayCard(View view) {
    EditText text = (EditText)findViewById(R.id.nameInput);
    String str = text.getText().toString();
    Toast.makeText(this, "Button was clicked "+str,Toast.LENGTH_LONG).show();
    getIntent().putExtra(MSG,str);
    startActivity(new Intent(this,birthdaygreeting.class)) ;

    ImageView image=(ImageView) findViewById(R.id.cake);
    image.setImageResource(R.drawable.wish);
}

用这个

public void createBirthdayCard(View view) {
    EditText text = (EditText)findViewById(R.id.nameInput);
    String str = text.getText().toString();
    Toast.makeText(this, "Button was clicked "+str,Toast.LENGTH_LONG).show();
    startActivity(new Intent(this,birthdaygreeting.class).putExtra(MSG,str)) ;

    ImageView image=(ImageView) findViewById(R.id.cake);
    image.setImageResource(R.drawable.wish);
}

我怎么知道它会对我有帮助?


这会对你有所帮助,因为在你给出的新 Intent 中,正在给出额外的东西。因此,该值正在被发送。

关于java - 在我的应用程序的第二个 Activity 中显示 "Happy birthday null",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70819140/

相关文章:

android - 为什么我收到无法打开调试器端口的错误 (127.0.0.1 :58061): java.net.SocketException "socket closed"

java - 线程中的异常 "AWT-EventQueue-0"java.lang.ArrayIndexOutOfBoundsException : -1 error

android - 关闭应用程序时使用 MediaPlayer 的服务不会停止 - Android

java - 如何在不更改 RecyclerView 中的主体的情况下更改 View Drawable 的背景颜色?

java - Android 根文件夹读写权限

android-studio - Windows 中的 Android Studio 更新问题

java - Java 中的异常。我们为什么要拥有多个可检查类和一个不可检查类呢?

Java getDeclaredMethod() 字符串参数的参数类型

java - 是什么原因导致打字失败?

java - 将 Google Play 服务添加到非 gradle Android Studio 项目?