传递的参数类型错误

时间:2018-03-29 13:18:42

标签: android kotlin

我有一个 base 模块,在这个模块中我有一个接口:

interface BaseNavigationInterface : Serializable{

fun onItemClicked(navItemId: Int)
}

我有一个市场模块,在这个模块中,我有一个使用此静态方法的活动:

companion object {
    @JvmStatic
    fun newIntent(context: Context, navInterface: BaseNavigationInterface) : Intent {
        var intent = Intent(context, MarketActivity::class.java)
        intent.putExtra("interface", navInterface)
        return intent
    }
}

在我的其他模块(这是 app 模块)中,我想像这样启动 market 模块:

startActivity(MarketActivity.newIntent(this, navigationInterface));

navigationInterface是我活动中的一个类变量:

private BaseNavigationInterface navigationInterface = (BaseNavigationInterface)(new BaseNavigationInterface() {
    @Override
    public void onItemClicked(int navItemId) {

    }
});

我的问题是,当我的程序调用startActivity()方法并调用MarketActivity.newIntent()方法时,navigationInterface参数的类型是MainActivity。 为什么呢?

enter image description here

我遇到了这个例外:

  

java.lang.RuntimeException:Parcelable遇到IOException编写可序列化对象(name = my.app.activities.MainActivity $ 9)

纯kotlin项目中的相同代码工作正常,但现在我有一个混合项目。 (app模块是java,oders是kotlin模块)

1 个答案:

答案 0 :(得分:0)

如果您想要一个可序列化的回调,您可以使用https://developer.android.com/reference/android/os/ResultReceiver.html

ResultReceiver receiver = new ResultReceiver(new Handler()) {
    protected void onReceiveResult(int resultCode, Bundle resultData) {
       val navItemId: Int = resultData.get...
    }
}

intent.putExtra("interface", receiver )