java - 如何将上下文从 MainActivity 传递到 Android 中的另一个类?

标签 java android class main-activity

我在尝试将上下文从 MainActivity 类传递到另一个类时遇到问题。这是 ContextPasser 类。

public class ContextPasser extends Application{
public Context context;
public ContextPasser(){
    context = getApplicationContext();
}}

但是如果我在另一个类中使用上下文变量,如下所示:

Line line = new Line(new ContextPasser().context);

我遇到空指针异常。我想要一个不涉及传递上下文变量的解决方案,因为我已经查看了所有其他 stackoverflows,它们似乎并没有帮助我。我发现的解决方案之一是:

Context context;
MyHelperClass(Context context){
this.context=context;
}

这对我没有帮助,因为我正在调用 Line 类,

Line line = new Line(new ContextPasser().context);

在另一个名为 GameRunner 的类中,如下所示:

public class GameRunner extends Activity {
Line line = new Line(new ContextPasser().context);
public void draw(Canvas canvas){
    line.draw(canvas);
    getWindow().getDecorView().setBackgroundColor(Color.BLACK);
}

public void update(){
    line.update();
}

}

因此,我想创建一个方法来传递 Context,而不接受 Context 类本身的参数。

请告诉我任何建议或答案。 我真的很感激。 非常感谢您的时间和考虑!

最佳答案

如果您的其他类是非 Activity 类,这就是您传递Context的方式:

public class MyNonActivityClass{

// variable to hold context
private Context context;

//save the context received via constructor in a local variable

public MyNonActivityClass(Context context){
    this.context=context;
}

}

这就是传递上下文的方式:

MyNonActivityClass mClass = new MyNonActivityClass(this);

关于java - 如何将上下文从 MainActivity 传递到 Android 中的另一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42036278/

相关文章:

java - 永无休止的 Java Applet 加载器意味着什么?

android - 从 Eclipse 运行后,我的应用程序没有出现在 AVD 中

android - 无法使用 Intent 从我的应用程序发送带有附件的电子邮件 (Gmail)

iphone - 在与创建它的文件不同的文件中使用 NSString

c# - 使用 COM 在 C++ 中实例化 C# 类成员

java 。输入奇数和偶数时程序崩溃

java - Gradle:错误:程序类型已经存在:javax.inject.Inject

java - 带有 DefaultTableModel 的简单 JTable

android - 使用 WebRTC AppRtc Demo 构建应用程序

c++ - 抽象基类中的静态常量变量