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

Pra*_*dav 4 android android-activity

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

Lum*_*mis 34

活动A应该有一个变量

static ActivityA activityA;
Run Code Online (Sandbox Code Playgroud)

在onCreate状态:

activityA = this;
Run Code Online (Sandbox Code Playgroud)

并添加此方法:

public static ActivityA getInstance(){
   return   activityA;
 }
Run Code Online (Sandbox Code Playgroud)

在活动B中,致电

ActivityA.getInstance().myFunction(); //call myFunction using activityA
Run Code Online (Sandbox Code Playgroud)

  • 是的,仅在顶级活动应控制其下方的活动时才需要这样做.例如,可以使用透明活动作为图形界面来控制其下方的活动.否则,最好在单独的实用程序类中将该函数作为静态函数,并在需要时传递上下文. (2认同)

Rag*_*ood 15

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

MyActivity activity = new MyActivity();
Run Code Online (Sandbox Code Playgroud)

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

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

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