Android 使用数据库对象时出现NullPointerException

Android 使用数据库对象时出现NullPointerException,android,Android,我是Android新手,我有一些问题。 看起来好像是说DB.EmployeeOperations.open()传递了一个null对象,但我不确定。 我在哪里漏了一步? 感谢您的帮助 提前谢谢 Logcat: *06-10 16:10:52.605 17203-17203/com.androidtutorialpoint.employeemanagementsystem E/AndroidRuntime:FATAL EXCEPTION:main 流程:com.androidtutorialpoi

我是Android新手,我有一些问题。 看起来好像是说DB.EmployeeOperations.open()传递了一个null对象,但我不确定。 我在哪里漏了一步? 感谢您的帮助

提前谢谢

Logcat

*06-10 16:10:52.605 17203-17203/com.androidtutorialpoint.employeemanagementsystem E/AndroidRuntime:FATAL EXCEPTION:main
流程:com.androidtutorialpoint.employeemanagementsystem,PID:17203
java.lang.RuntimeException:无法恢复活动{com.androidtutorialpoint.employeemanagementsystem/com.androidtutorialpoint.employeemanagementsystem.MainActivity}:java.lang.NullPointerException:尝试对空对象引用调用虚拟方法'void com.androidtutorialpoint.employeemanagementsystem.DB.EmployeeOperations.open()
在android.app.ActivityThread.performResumeActivity(ActivityThread.java:3019)上
在android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3050)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2425)
在android.app.ActivityThread.access$900(ActivityThread.java:154)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:135)
位于android.app.ActivityThread.main(ActivityThread.java:5294)
位于java.lang.reflect.Method.invoke(本机方法)
java.lang.reflect.Method.invoke(Method.java:372)和com.android.internal.os.ZygoteInit$methodAndArgscaler.run(ZygoteInit.java:904)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
原因:java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“void com.androidtutorialpoint.employeemanagementsystem.DB.EmployeeOperations.open()
位于com.androidtutorialpoint.employeemanagementsystem.MainActivity.onResume(MainActivity.java:148)
位于android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1257)
在android.app.Activity.performResume(Activity.java:6076)
在android.app.ActivityThread.performResumeActivity(ActivityThread.java:3008)上
在android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3050)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2425)
在android.app.ActivityThread.access$900(ActivityThread.java:154)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)
Java代码:

public类MainActivity扩展了AppCompatActivity{
专用按钮addEmployeeButton;
私人按钮编辑员工按钮;
私有按钮deleteEmployeeButton;
私有按钮查看AllEmployeeButton;
私人雇员行动雇员行动;
私有静态最终字符串EXTRA_EMP_ID=“com.androidtutorialpoint.empId”;
私有静态最终字符串EXTRA\u ADD\u UPDATE=“com.androidtutorialpoint.ADD\u UPDATE”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addEmployeeButton=(按钮)findViewById(R.id.Button\u add\u employee);
editEmployeeButton=(按钮)findViewById(R.id.Button\u edit\u employee);
deleteEmployeeButton=(按钮)findViewById(R.id.Button\u delete\u employee);
viewAllEmployeeButton=(按钮)findViewById(R.id.Button\u view\u employees);
addEmployeeButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
意图i=新意图(MainActivity.this,AddUpdateEmployee.class);
i、 putExtra(额外添加更新,“添加”);
星触觉(i);
}
});
editEmployeeButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
getEmpIdAndUpdateEmp();
}
});
deleteEmployeeButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
getEmpIdAndRemoveEmp();
}
});
viewAllEmployeeButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
意图i=新意图(MainActivity.this,viewalleEmployees.class);
星触觉(i);
}
});
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(R.menu.employee\u菜单,菜单);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
int id=item.getItemId();
if(id==R.id.menu\u项目\u设置){
返回true;
}
返回super.onOptionsItemSelected(项目);
}
public void getEmpIdAndUpdateEmp(){
LayoutInflater li=LayoutInflater.from(this);
View getEmpIdView=li.inflate(R.layout.dialog\u get\u emp\u id,null);
AlertDialog.Builder alertDialogBuilder=新建AlertDialog.Builder(此);
//将dialog\u get\u emp\u id.xml设置为alertdialog builder
alertDialogBuilder.setView(getEmpIdView);
最终EditText用户输入=(EditText)getEmpIdView.findViewById(R.id.editTextDialogUserInput);
//设置对话框消息
alertDialogBuilder
.setCancelable(错误)
.setPositiveButton(“确定”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
//获取用户输入并将其设置为结果
//编辑文本
意图i=新意图(MainActivity.this,AddUpdateEmployee.class);
i、 额外费用(E)
employeeOps = new EmployeeOperations(this);