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

Android 我可以在其他类中创建活动的对象吗?,android,android-activity,Android,Android Activity,我已经在mainactivity中定义了一个函数,现在我想在我的应用程序中使用另一个类访问。我已经使用调用该函数的对象创建了mainactivity的对象。它没有显示任何错误,但不是每次我尝试执行应用程序时都执行它崩溃? 任何解决方案您不能仅使用以下方法创建活动对象: MyActivity activity = new MyActivity(); 与普通Java类一样。Android中的所有活动都必须经过活动生命周期,以便它们具有有效的上下文 通过将某个活动视为普通Java类,您将得到一个空上

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

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

MyActivity activity = new MyActivity();
与普通Java类一样。Android中的所有活动都必须经过活动生命周期,以便它们具有有效的上下文

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


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

活动a应该有一个变量

static ActivityA activityA;
在onCreate状态下:

activityA = this;
并添加此方法:

public static ActivityA getInstance(){
   return   activityA;
 }
在活动B中,调用

ActivityA.getInstance().myFunction(); //call myFunction using activityA

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

public int i;  // Variable in Activity class

((ActivityName) context).i          // accessing in adapter 

您只需传递活动类的上下文…您需要传递可以使用getApplicationContext()的上下文。请尝试下面的链接,并希望使用全文:-我知道如何使用泛型util类访问常用方法…但是如何在活动中获取静态方法并使用类名调用它。。。?错了吗?如果我们这样做会发生什么。@Pragnani静态方法不能引用类的非静态成员。由于类上下文不是静态的,您仍然会得到一个错误。是的,我知道..但是我们如何在非静态类中访问calendar类的静态方法,即calendar.getInstance()。即使它是factory方法,但它是staticCalendar。getInstance()用于根据您的区域设置返回calendar类的实例等,用于调用calendar类上的其他方法。@Pragnani是。但是你不能在你的活动中创建一个静态方法,使用活动实例或上下文调用任何东西,然后在另一个类中调用它+1作为答案…这就是我和Raghav Sood讨论过的答案,答案是belwo他的评论,只有当一个顶级活动应该控制它下面的活动时才需要这个方法。e、 可以使用透明活动作为图形界面来控制其下方的活动。否则,该函数最好是单独实用程序类中的静态函数,并在需要时传递上下文。。。。imageView的…没有获得
myFunction
非常感谢,它工作正常。使用代码
MyActivity activity=new MyActivity()创建任何活动的对象将不会经历任何活动的生命周期,并将生成空指针异常。