#java #android #android-listview #android-sqlite
#java #Android #android-listview #android-sqlite
Вопрос:
Я создал действия «А» и «В».Я вставил некоторые данные в действие «A», и я хочу отобразить все данные в listview в действии «B» при нажатии кнопки в действии «A».Но когда я запускаю приложение, оно выходит из строя и выдает ошибку и исключение NullPointerException.Пожалуйста, помогите мне.Заранее спасибо.
Вот мой код метода базы данных.
public Cursor employeeName(){
ArrayList<Employee> EmployeeNameList = new ArrayList<Employee>();
String selectQuery = "SELECT * FROM " EMPLOYEE_DETAILS_TABLE;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if(cursor.moveToFirst())
{
do{
Employee empName = new Employee();
empName.setName(cursor.getString(1));
empName.setDepartment(cursor.getString(2));
empName.setDesignation(cursor.getString(3));
EmployeeNameList.add(empName);
} while(cursor.moveToNext());
}
return cursor;
}
public List<String> getAllEmployeeName() {
List<String> labels = new ArrayList<String>();
// Select All Query
String selectQuery = "SELECT * FROM " EMPLOYEE_DETAILS_TABLE;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
labels.add(cursor.getString(1));
} while (cursor.moveToNext());
}
cursor.close();
db.close();
return labels;
}
Вот мой код активности
public class Employee_List extends ListActivity
{
DatabaseHelper databaseHelper;
Context context;
Employee emp;
protected SQLiteDatabase db;
protected Cursor cursor;
protected ListAdapter adapter;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.staff_employee_list);
populateListView();
}
private void populateListView()
{
DatabaseHelper databaseHelper = new DatabaseHelper(context);
db = (new DatabaseHelper(this)).getWritableDatabase();
Cursor cursor =(Cursor) databaseHelper.employeeName();
String[] fromFieldNames = new String[]
{databaseHelper.Staff_Employee_Name,databaseHelper.Department,databaseHelper.Designation};
int[] toViewIDs = new int[]
{R.id.textViewEmpName, R.id.textViewDepartmet, R.id.textViewDesignation};
SimpleCursorAdapter myCursorAdapter;
myCursorAdapter = new SimpleCursorAdapter(getBaseContext(), R.layout.staff_employee_list_item, cursor, fromFieldNames, toViewIDs);
ListView myList = (ListView) findViewById(android.R.id.list);
myList.setAdapter(myCursorAdapter);
}
}
Вот мой журнал регистрации.
06-27 15:25:51.498: E/AndroidRuntime(12033): FATAL EXCEPTION: main
06-27 15:25:51.498: E/AndroidRuntime(12033): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.employee_review/com.employee_review.Employee_List}: java.lang.NullPointerException
06-27 15:25:51.498: E/AndroidRuntime(12033): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
06-27 15:25:51.498: E/AndroidRuntime(12033): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
06-27 15:25:51.498: E/AndroidRuntime(12033): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
06-27 15:25:51.498: E/AndroidRuntime(12033): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
06-27 15:25:51.498: E/AndroidRuntime(12033): at android.os.Handler.dispatchMessage(Handler.java:99)
06-27 15:25:51.498: E/AndroidRuntime(12033): at android.os.Looper.loop(Looper.java:123)
06-27 15:25:51.498: E/AndroidRuntime(12033): at android.app.ActivityThread.main(ActivityThread.java:3683)
06-27 15:25:51.498: E/AndroidRuntime(12033): at java.lang.reflect.Method.invokeNative(Native Method)
06-27 15:25:51.498: E/AndroidRuntime(12033): at java.lang.reflect.Method.invoke(Method.java:507)
06-27 15:25:51.498: E/AndroidRuntime(12033): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
06-27 15:25:51.498: E/AndroidRuntime(12033): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
06-27 15:25:51.498: E/AndroidRuntime(12033): at dalvik.system.NativeStart.main(Native Method)
06-27 15:25:51.498: E/AndroidRuntime(12033): Caused by: java.lang.NullPointerException
06-27 15:25:51.498: E/AndroidRuntime(12033): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:118)
06-27 15:25:51.498: E/AndroidRuntime(12033): at com.employee_review.DatabaseHelper.employeeName(DatabaseHelper.java:129)
06-27 15:25:51.498: E/AndroidRuntime(12033): at com.employee_review.Employee_List.populateListView(Employee_List.java:35)
06-27 15:25:51.498: E/AndroidRuntime(12033): at com.employee_review.Employee_List.onCreate(Employee_List.java:28)
06-27 15:25:51.498: E/AndroidRuntime(12033): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
06-27 15:25:51.498: E/AndroidRuntime(12033): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
06-27 15:25:51.498: E/AndroidRuntime(12033): ... 11 more
Комментарии:
1. пожалуйста, опубликуйте трассировку стека и отметьте строку, в которой возникает ошибка
2. @ OpiatefuchsCursor курсор =(Курсор) DatabaseHelper.EmployeeName();
3. Opiatefuchs: Почему бы не отобразить мой listview из sqlite, пожалуйста, помогите мне.
Ответ №1:
Здесь context
вы передаете вспомогательный конструктор базы данных не инициализируется:
DatabaseHelper databaseHelper = new DatabaseHelper(context);
context
Заменить, например this
.