You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Kotlin companion object中调用Java Activity类的公共方法

解决方案
  • 优先检查包导入配置
    确认Kotlin文件顶部已正确导入SampleActivity的全类名,若两类不在同一个包下,必须添加导入语句import 你的应用包名.SampleActivity,包名不匹配是Kotlin无法识别Java类方法的最常见原因。
  • 清理构建缓存
    Android Studio 跨语言调用识别异常大概率是构建缓存导致的,按以下步骤操作即可恢复:
    1. 点击顶部菜单栏 File -> Invalidate Caches...
    2. 勾选 Clear file system cache and local history 后点击 Invalidate and Restart
    3. 重启后重新构建项目
  • 优化类型转换逻辑
    你当前的强转逻辑如果传入非SampleActivity类型的Context会直接崩溃,建议改为安全调用写法:
    (context as? SampleActivity)?.toggleMark(true)
    
  • 回滚错误的static修改
    你当前是通过SampleActivity实例调用成员方法,不需要将toggleMark改为static,改回原本的public非静态成员方法即可,静态方法无法通过实例调用,反而会触发报错。

完整正确代码示例

Java 侧(保持原有逻辑即可)

public class SampleActivity extends Activity{
     public void toggleMark(boolean canTic)
     { // 原有业务逻辑 }
}

Kotlin 侧

// 替换为你自己项目中SampleActivity的实际包名
import com.yourpackage.name.SampleActivity
import android.content.Context

class MyUtils {
    companion object {
         fun setTicPref(context: Context)
         {
             // 原有业务逻辑 
             (context as? SampleActivity)?.toggleMark(true)
         }
    }
}

内容的提问来源于stack exchange,提问作者Rajnikant B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 14:54:04