如何正确传递上下文?

时间:2012-12-11 12:01:49

标签: android

我在LayoutEditor中遇到了一些错误。

  

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

在我的应用程序中,我尝试将ApplicationContext传递给类,但是我得到了这些错误,我无法弄清楚为什么? 这是MainActivty

 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类中)?

我该怎么办?

3 个答案:

答案 0 :(得分:2)

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

consts = new Consts(MainActivity.this);

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

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

}

答案 1 :(得分:0)

MainActivity Consts中,您应该发起Consts consts = new Consts(this); 喜欢:

Consts

在您的public Consts(Context context) 课程中,您的构造函数应如下所示:

{{1}}

答案 2 :(得分:0)

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

更好的想法是在Consts类中创建一个构造函数

private Context context;


public Consts(Context ctx) {

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

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

consts = new Consts(this);