1

我在 LayoutEditor 中遇到一些错误。

无法实例化。... java.lang.NullPointerException

在我的应用程序中,我尝试将 ApplicationContext 传递给一个类,但我收到这些错误,我不知道为什么?这是 MainActivity

 public class MainActivity extends Activity {

static Window   window;
static Context  context;
static Consts consts;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
     window = this.getWindow();
     context = this.getApplicationContext();
     consts = new Consts();

    setContentView(R.layout.activity_lap_timer);

} 

在 Consts 类中,我尝试通过静态变量获取上下文

private Context context = MainActivity.context;


public Consts() {

    DisplayMetrics metrics = this.context.getResources().getDisplayMetrics(); <-- here i have the error

对不起,我忘了这个

public static Consts getConsts() {
    if(_currentConsts==null)
        return new Consts();
    return _currentConsts;
}

这个东西很重要,这个构造函数怎么处理(是在Consts类中)?

我能做些什么 ?

4

3 回答 3

2

将 MainActivity 上下文传递给 Consts 类构造函数,如下所示。

consts = new Consts(MainActivity.this);

并将构造函数上下文分配给 Consts 类中的全局变量上下文,如下所示。

Context ctx;
public Consts(Context ctx)
{
  this.ctx = ctx;
  DisplayMetrics metrics = ctx.getResources().getDisplayMetrics();

}
于 2012-12-11T12:03:57.213 回答
0

在你的MainActivity你应该发起你的Consts喜欢:

Consts consts = new Consts(this);

在您的Consts班级中,您的构造函数应如下所示:

public Consts(Context context)
于 2012-12-11T12:04:03.720 回答
0

使用静态变量不是一个好习惯。

一个更好的主意是在你的 Consts 类中创建一个构造函数

private Context context;


public Consts(Context ctx) {

    DisplayMetrics metrics = ctx.getResources().getDisplayMetrics();
}

然后从您的活动中调用它:

consts = new Consts(this);
于 2012-12-11T12:04:51.260 回答