我已经在mainactivity中定义了一个函数,现在我想用我的app中的另一个类访问。我已经通过使用我调用了该函数的对象创建了一个mainactivity对象。它没有显示任何错误但是它没有执行每次我尝试执行应用程序崩溃? 任何解决方案
答案 0 :(得分:33)
活动A应该有一个变量
static ActivityA activityA;
在onCreate状态:
activityA = this;
并添加此方法:
public static ActivityA getInstance(){
return activityA;
}
在活动B中,请致电
ActivityA.getInstance().myFunction(); //call myFunction using activityA
答案 1 :(得分:14)
您不能只使用以下方法创建活动对象:
MyActivity activity = new MyActivity();
就像使用普通的Java类一样。 Android中的所有活动都必须通过活动生命周期,以便它们附加有有效的上下文。
通过将Activity视为普通的Java类,您最终会得到一个空上下文。由于Activity中的大多数方法都在其Context上调用,因此您将获得一个空指针异常,这就是您的应用程序崩溃的原因。
相反,将需要从其他类调用的所有此类方法移动到Utility类中,该类在其构造函数中接受有效上下文,然后在方法中使用该上下文来完成工作。
答案 2 :(得分:0)
将变量设为公共,然后在适配器中创建对象,如下所示:
public int i; // Variable in Activity class
((ActivityName) context).i // accessing in adapter