我可以在其他类中创建活动的对象吗?

时间:2013-02-19 11:12:38

标签: android android-activity

我已经在mainactivity中定义了一个函数,现在我想用我的app中的另一个类访问。我已经通过使用我调用了该函数的对象创建了一个mainactivity对象。它没有显示任何错误但是它没有执行每次我尝试执行应用程序崩溃? 任何解决方案

3 个答案:

答案 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