我可以在其他课程中创建活动的对象吗?
我已经在mainactivity中定义了一个函数,现在我想要访问我的app中的另一个类。我已经创建了一个mainactivity的对象,通过使用该对象我已经调用了函数。它不显示任何错误,但它不会执行每一次尝试执行应用程序崩溃? 任何解决方案
活动A应该有一个变量
static ActivityA activityA;
在onCreate状态下:
activityA = this;
并添加这个方法:
public static ActivityA getInstance(){ return activityA; }
在活动B中,打电话
ActivityA.getInstance().myFunction(); //call myFunction using activityA
您不能只使用以下命令创建活动的对象:
MyActivity activity = new MyActivity();
就像使用普通的Java类一样。 Android中的所有活动都必须经历活动生命周期,以便它们具有附加的有效上下文。
通过将Activity作为一个普通的Java类来处理,最终会得到一个null上下文。 由于Activity中的大多数方法都是在Context上调用的,所以会得到一个空指针异常,这就是为什么你的应用程序崩溃了。
相反,将所有需要从其他类中调用的方法移动到一个Utility类中,该类在其构造函数中接受有效的上下文,然后在方法中使用该上下文来完成工作。