Java - java.io.NotSerializableException:

我想从活动到另一个分享课程。我尝试了一切,到处搜索,但无法解决我的问题。最重要的是我必须使用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");


梦里花落0921
浏览 177回答 1
1回答

子衿沉夜

您的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()。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java