6

我已经定义了一个函数,MainActivity现在我想从我的应用程序中的另一个类访问该函数。我创建了一个对象,MainActivity并使用该对象调用了该函数。虽然没有错误,但它没有执行。每次我尝试执行时,应用程序都会崩溃。

4

3 回答 3

34

活动 A 应该有一个变量

static ActivityA activityA;

在 onCreate 状态:

activityA = this;

并添加此方法:

public static ActivityA getInstance(){
   return   activityA;
 }

在活动 B 中,调用

ActivityA.getInstance().myFunction(); //call myFunction using activityA
于 2013-02-19T11:35:36.053 回答
18

您不能只使用以下方法创建活动对象:

MyActivity activity = new MyActivity();

就像使用普通的 Java 类一样。Android 中的所有活动都必须经过活动生命周期,以便它们具有附加的有效上下文。

通过将 Activity 视为普通的 Java 类,您最终会得到一个空上下文。由于 Activity 中的大多数方法都是在其 Context 上调用的,因此您将收到空指针异常,这就是您的应用程序崩溃的原因。

相反,将需要从其他类调用的所有此类方法移动到实用程序类中,该类在其构造函数中接受有效上下文,然后在方法中使用该上下文来完成工作。

于 2013-02-19T11:14:10.307 回答
0

将变量设为 public,然后在适配器中创建对象,如下所示:

public int i;  // Variable in Activity class

((ActivityName) context).i          // accessing in adapter 
于 2018-12-29T12:27:24.700 回答