我试图通过按钮在活动之间传递connectionHelper对象。这是我的第一个活动
LoginPanelActivity.java
this.forgotPassword.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(LoginPanelActivity.this, ForgotPasswordActivity.class);
intent.putExtra("connectionHelper", connectionHelper);
v.getContext().startActivity(intent);
}
});
第二个活动:ForgotPasswordActvity.java
public class ForgotPasswordActivity extends AppCompatActivity {
ConnectionHelper connectionHelper;
SQLQuery sqlQuery;
@Override
protected void onCreate(Bundle savedInstance)
{
super.onCreate(savedInstance);
setContentView(R.layout.forgot_password_layout);
init();
}
private void init()
{
ConnectionHelper connectionHelper_ = (ConnectionHelper) getIntent().getSerializableExtra("connectionHelper");
if(connectionHelper_ == null)
{
this.connectionHelper = new ConnectionHelper();
}
this.sqlQuery = new SQLQuery(Objects.requireNonNull(this.connectionHelper).getConnection());
}
ConnectionHelper 类实现为可序列化
public class ConnectionHelper implements Serializable {
......
}
我想从一个活动接收connectionHelper对象到另一个活动,以便在其中使用,以避免在每个活动中连接数据库。
您的代码看起来不错,但是,请确保主自定义类的每个嵌套类都实现了 Serialized 接口,以避免任何序列化异常。
另外,不需要像这样调用startActivity,因为你已经在Activity中了。在startActivity(intent)之前删除v.getContext()
您还可以尝试 Parcelable 接口而不是 Serialized ,以防它不起作用。
或者
您可以使用 GSON 库将对象转换为字符串,并使用 Intent 在 Activity 之间传递它,但请记住当您想要使用它时,使用 GSON 将其转换回对象。