我想从活动到另一个分享课程。我尝试了一切,到处搜索,但无法解决我的问题。最重要的是我必须使用BusinessLogic作为整个App的控制类。每个变量,方法都在其中..有人可以帮我吗?public void ConnectSQL() { StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); try { Class.forName("net.sourceforge.jtds.jdbc.Driver"); con = DriverManager.getConnection("jdbc:jtds:sqlserver://192.168.3.10;databaseName=hungary;user=stockiduser;password=Berwin1559;loginTimeout=5;socketTimeout=5"); KapcsolatAllasKijelzes(false); } catch (Exception e) { KapcsolatAllasKijelzes(true); }}这个方法位于我名为 BusinessLogic 的类中......这是 MainActivity 代码:Intent intent=new Intent(this, Kiszedes.class);intent.putExtra("bl",bl);startActivity(intent);Kiszedes.class 是目标活动: BusinessLogic bl = (BusinessLogic) getIntent().getSerializableExtra("bl");
1 回答

子衿沉夜
TA贡献1828条经验 获得超3个赞
您的BusinessLogic类包含对JtdsConnection不可序列化的对象的引用。仅仅BusinessLogic成为Serializable其所有成员(以及成员的成员等)是不够的。也必须如此Serializable。
由于JtdsConnection不是您创建的类,因此您无法创建它Serializable。无论如何,您尝试进行这项工作的方式并不完全正确。
我建议您拥有业务逻辑的全局实例,以便您可以从任何活动/片段访问它。
在我的项目中,我通常创建一个包含我需要的对象实例的Conf类static。在你的情况下,你可能有这样的事情:
public class Conf {
@Nullable
private static BusinessLogic businessLogic;
@NonNull
public static BusinessLogic getBusinessLogic() {
if (businessLogic == null) {
businessLogic = new BusinessLogic();
}
return businessLogic;
}
}
在你的活动,你现在可以简单地做:BusinessLogic bl = Conf.getBusinessLogic()。
添加回答
举报
0/150
提交
取消