问题描述
我正在尝试通过 Intent 和 putExtra 打开另一个活动。 它以前运行良好,但现在崩溃了。
startActivity(new Intent(ForgotPassword.this,OtpVerification.class)
.putExtra("user",user)
.putExtra("otp",verificationId));
finish();
user = getIntent().getParcelableExtra("user");
该应用程序甚至不会进入另一个活动,并且在 logcat 中没有任何错误消息的情况下崩溃。 仅当我添加 .putExtra 代码时才会发生
解决方法
尝试通过以下方式添加 putExtra
Intent intent = new Intent(ForgotPassword.this,OtpVerification.class);
intent.putExtra("user",user);
intent.putExtra("otp",verificationId);
startActivity(intent);
finish();
然后获得意图附加
Intent intent= getIntent();
Bundle extras = intent.getExtras();
if(extras != null)
String data = extras.getString("keyName");
,
您的用户是您试图从一个活动传递到另一个活动的对象。 因此,您可以创建一个实现 Serializable 接口的自定义类。(您也必须能够使用 Parcelable,但我没有使用它的经验)
//传递: intent.putExtra("用户",用户);
// 在第二个 Activity 中检索对象 getIntent().getSerializableExtra("User");
注意点:主自定义类中的每个嵌套类都必须实现了 Serializable 接口 例如:
class MainClass implements Serializable {
public MainClass() {}
public static class ChildClass implements Serializable {
public ChildClass() {}
}
}
参考:How to pass an object from one activity to another on Android
,感谢您的建议,我发现的实际问题是我的用户对象有一个名为 image(字符串类型)的变量,其长度值约为 1,000,000(我在其中使用 base64 存储字符串编码的图像)。一旦我将大小减小到数千,它就起作用了。我不知道为什么该应用无法跨活动发送如此大的数据。