应用程序在主页出现之前崩溃。 尝试调用 android.content.Context.getApplicationInfo() 时返回空指针异常
我正在尝试为浮动动画制作动画 操作按钮,使其展开并显示其他两个按钮。 我制作了 xml 动画文件并尝试添加逻辑,以便当我点击 fab 时动画开始,但在运行应用程序时,它崩溃了。我对 Android 开发相当陌生,在 java 方面更有经验,但不知道如何查找或纠正空指针异常。
private Animation rotateOpen() {
return AnimationUtils.loadAnimation(this, R.anim.rotate_add_btn_open_anim);
}
private Animation rotateClose() {
return AnimationUtils.loadAnimation(this, R.anim.rotate_add_btn_close_anim);
}
private Animation fromBottom() {
return AnimationUtils.loadAnimation(this, R.anim.from_bottom_anim);
}
private Animation toBottom() {
return AnimationUtils.loadAnimation(this, R.anim.to_bottom_anim);
}
Button addBtn = findViewById(R.id.add_btn);
Button addTextBtn = findViewById(R.id.add_text_btn);
Button addImageBtn = findViewById(R.id.add_image_btn);
private boolean clicked = false;
onCreate(..) {
...
addBtn.setOnClickListener(v -> onFabExpanded());
addTextBtn.setOnClickListener(v -> Toast.makeText(MainActivity.this, R.string.add_text_note, Toast.LENGTH_SHORT).show());
addImageBtn.setOnClickListener(v -> Toast.makeText(MainActivity.this, R.string.add_image_note, Toast.LENGTH_SHORT).show());
}
private void onFabExpanded() {
setVisibility(clicked);
setAnimation(clicked);
clicked = !clicked;
}
private void setVisibility(Boolean clicked) {
if (!clicked) {
addTextBtn.setVisibility(View.VISIBLE);
addImageBtn.setVisibility(View.VISIBLE);
}
else {
addTextBtn.setVisibility(View.INVISIBLE);
addImageBtn.setVisibility(View.INVISIBLE);
}
}
private void setAnimation(Boolean clicked) {
if (!clicked) {
addTextBtn.startAnimation(fromBottom());
addImageBtn.startAnimation(fromBottom());
addBtn.startAnimation(rotateOpen());
}
else {
addTextBtn.startAnimation(toBottom());
addImageBtn.startAnimation(toBottom());
addBtn.startAnimation(rotateClose());
}
}
这个问题是可能的 这个问题重复
应用程序在运行时崩溃,因为您没有将布局与 Activity 连接,因此您必须使用 setContentView(Your_layout) 然后初始化按钮。
在 onCreate() 之前,您的 Activity 还没有 findViewById() 内部需要的窗口。在 setContentView() 之前(您应该在 onCreate() 中调用)也没有找到任何视图。
Class Something{
Button addBtn ;
Button addTextBtn ;
Button addImageBtn ;
onCreate(..) {
setContentView(YOUR_LAYOUT)
...
addImageBtn = findViewById(R.id.add_image_btn);
addTextBtn = findViewById(R.id.add_text_btn);
addBtn = findViewById(R.id.add_btn);
}
}
欢迎来到 StackOverFlow !!