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

Android项目中如何正确创建自定义类并在Activity调用其函数?

嘿,我来帮你搞定这个报错,顺便分享下Android里创建和使用自定义类的最佳姿势!

首先,你遇到的error: can't resolve move报错,大概率是两个原因导致的,咱们一步步排查:

一、先解决当前报错

1. 检查包导入是否正确

你的Moving类包名是edmt.dev.androidgridlayout,如果你的Activity不在同一个包下面,就必须手动导入这个类。在Activity的代码顶部加上这行:

import edmt.dev.androidgridlayout.Moving;

要是不想写导入语句,也可以用全限定类名来创建对象(不过还是导入更清爽):

edmt.dev.androidgridlayout.Moving a = new edmt.dev.androidgridlayout.Moving();
a.move();

2. 确认类和方法的访问权限

你现在的Moving类和move方法都是默认的包访问权限(没加public修饰符),如果Activity和它不在同一个包,就没法访问这个方法。所以建议给类和方法都加上public,确保跨包也能正常调用:

package edmt.dev.androidgridlayout;

public class Moving {
    public void move() {
        // 这里顺便提一句:Android里建议用Log替代System.out,方便在Logcat查看
        // Log.d("MovingLog", "Animals can move");
        System.out.println("Animals can move");
    }
}

二、Android中创建自定义类的最佳实践

解决完报错,再给你分享几个实用的最佳做法:

  • 合理规划包结构:别把所有类都堆在同一个包下,比如把工具类放utils子包、实体类放models子包,这样项目结构清晰,找类也方便。
  • 遵循编码规范:类名首字母大写(你已经做对啦),方法名小驼峰,成员变量尽量用private,通过getter/setter暴露,封装内部细节。
  • 注意Context的使用:如果你的自定义类需要用到Context(比如访问资源、启动页面),别直接持有Activity的强引用,不然容易内存泄漏,优先用getApplicationContext(),或者用弱引用包裹。
  • 用Android日志工具:System.out.println的日志在Android里不好查,换成Log.d()/Log.i()这些官方工具,给日志加个标签,调试起来更高效。

按照上面的步骤调整后,你的move()方法应该就能正常调用啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:37:05