为什么我的意图在活动之间传递对象时返回空对象?

问题描述 投票:0回答:1

我试图通过按钮在活动之间传递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对象到另一个活动,以便在其中使用,以避免在每个活动中连接数据库。

java android android-intent
1个回答
0
投票

您的代码看起来不错,但是,请确保主自定义类的每个嵌套类都实现了 Serialized 接口,以避免任何序列化异常。

另外,不需要像这样调用startActivity,因为你已经在Activity中了。在startActivity(intent)之前删除v.getContext()

您还可以尝试 Parcelable 接口而不是 Serialized ,以防它不起作用。

或者

您可以使用 GSON 库将对象转换为字符串,并使用 Intent 在 Activity 之间传递它,但请记住当您想要使用它时,使用 GSON 将其转换回对象。

© www.soinside.com 2019 - 2024. All rights reserved.