我在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类中)?
我该怎么办?
答案 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);