2012-02-13 4 views
0

, в основном, я пытаюсь показать результат listview (созданный с помощью QSLite), но в классе CourseDetails для извлечения элемента из полученного списка возникает такая проблема:Android-SQLite: конструктор DBHelper не определен

"Путь Описание Ресурс Местоположение Тип Конструктор DBHelper (CourseDetails) не определено CourseDetails.java/MariposaTrainingMobile/SRC/COM/mariposatraining/курсы линии 31 Java Проблема"

Я использую класс DBHelper для этого, но я не знаю, почему программа отправляет мне эту ошибку и не дает решения проблемы, код моего класса DBHelper следующий:

public class DBHelper extends SQLiteOpenHelper{ 

private String sql; 
SQLiteDatabase db; 

public DBHelper(Context context, String name, CursorFactory factory, 
     int version) { 
    super(context, name, factory, 1); 
    // TODO Auto-generated constructor stub 
} 

@Override 
public void onCreate(SQLiteDatabase db) 
{ 
    // TODO Auto-generated method stub 
    String sql= " CREATE TABLE courses (" + "_id INTEGER PRIMARY KEY AUTOINCREMENT, " + " title TEXT, " + " instructor TEXT, " + " length TEXT, " + " rating TEXT, " + " topic TEXT, " + " subject TEXT, " + "description TEXT)"; 
    db.execSQL(sql);   
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 

    db.execSQL("DROP TABLE IF EXISTS courses"); 
    onCreate(db);  
} 


public void insertCourses() 
{ 
    db=getWritableDatabase(); 
    sql="INSERT INTO courses(title, instructor, length, rating, topic, subject, description) VALUES ('Enabling Freedom...', 'Instructor: Keith Savell', 'length: 60', 'Rating: 4.82', 'Topic: Creating a Prosthetic Environment ', 'Subject:Learn to evaluate and modify the environment to support our residents with cognitive impairment as they age in place.', 'Description: Residents with dementia and delirium are constantly assessing the environment, looking for clues to help them understand where they are, who others around them are, what they are supposed to be doing and what is expected of them.')"; 
    db.execSQL(sql); 
    sql="INSERT INTO courses(title, instructor, length, rating, topic, subject, description) VALUES ('Interdisciplinary Care Planning', 'Instructor: Keith Savell', 'length: 60', 'Rating: 4.7', 'Topic: Interdisciplinary Care Planning', 'Subject:Encourage the Interdisciplinary Treatment Team (IDT) to work as a team and view the Care Plan as a resident-centered collaborative effort to enhance the care and quality of resident life.', 'Description: Interdisciplinary Care Planning requires members of the Interdisciplinary Treatment Team (IDT) to view the Care Plan as a resident centered collaborative effort - rather than as a staff centered document. Learn how to utilize the Care Plan to truly function as a team - working together to enhance the care and quality of resident life.')"; 
    db.execSQL(sql); 
    sql="INSERT INTO courses(title, instructor, length, rating, topic, subject, description) VALUES ('Culture Change: Creating A Climate Of Care...', 'Instructor: Keith Savell', 'length: 60', 'Rating: 5', 'Topic: Culture Change ', 'Subject:Learn to evaluate and modify the environment to support our residents with cognitive impairment as they age in place.', 'Description: Residents with dementia and delirium are constantly assessing the environment, looking for clues to help them understand where they are, who others around them are, what they are supposed to be doing and what is expected of them.')"; 
    db.execSQL(sql); 
    sql="INSERT INTO courses(title, instructor, length, rating, topic, subject, description) VALUES ('Medical Records Documentation', 'Instructor: Keith Savell', 'length: 60', 'Rating: 5', 'Topic: Medical Records Documentation ', 'Subject:Encourage the Interdisciplinary Treatment Team (IDT) to work as a team and view the Care Plan as a resident-centered collaborative effort to enhance the care and quality of resident life.', 'Description: Interdisciplinary Care Planning requires members of the Interdisciplinary Treatment Team (IDT) to view the Care Plan as a resident centered collaborative effort - rather than as a staff centered document. Learn how to utilize the Care Plan to truly function as a team - working together to enhance the care and quality of resident life.')"; 
    db.execSQL(sql); 
    sql="INSERT INTO courses(title, instructor, length, rating, topic, subject, description) VALUES ('Census Challenges', 'Instructor: Keith Savell', 'length: 60', 'Rating: 4.45', 'Topic: Creative Solutions to Drive Census ', 'Subject:Learn to evaluate and modify the environment to support our residents with cognitive impairment as they age in place.', 'Description: Residents with dementia and delirium are constantly assessing the environment, looking for clues to help them understand where they are, who others around them are, what they are supposed to be doing and what is expected of them.')"; 
    db.execSQL(sql); 
    sql="INSERT INTO courses(title, instructor, length, rating, topic, subject, description) VALUES ('Fall Prevention: Reducing Fall Related Injuries', 'Instructor: Keith Savell', 'length: 60', 'Rating: 5', 'Topic: Guidelines for Health Care Providers ', 'Subject:Encourage the Interdisciplinary Treatment Team (IDT) to work as a team and view the Care Plan as a resident-centered collaborative effort to enhance the care and quality of resident life.', 'Description: Interdisciplinary Care Planning requires members of the Interdisciplinary Treatment Team (IDT) to view the Care Plan as a resident centered collaborative effort - rather than as a staff centered document. Learn how to utilize the Care Plan to truly function as a team - working together to enhance the care and quality of resident life.')"; 
    db.execSQL(sql); 
    sql="INSERT INTO courses(title, instructor, length, rating, topic, subject, description) VALUES ('Meaningful Engagement', 'Instructor: Keith Savell', 'length: 60', 'Rating: 5', 'Topic: Creating The Failure Free Activity Program ', 'Subject:Learn to evaluate and modify the environment to support our residents with cognitive impairment as they age in place.', 'Description: Residents with dementia and delirium are constantly assessing the environment, looking for clues to help them understand where they are, who others around them are, what they are supposed to be doing and what is expected of them.')"; 
    db.execSQL(sql); 
    sql="INSERT INTO courses(title, instructor, length, rating, topic, subject, description) VALUES ('Dementia and Delirium', 'Instructor: Keith Savell', 'length: 60', 'Rating: 4.69', 'Topic: The Importance of Accurate Diagnosis and Treatment ', 'Subject:Encourage the Interdisciplinary Treatment Team (IDT) to work as a team and view the Care Plan as a resident-centered collaborative effort to enhance the care and quality of resident life.', 'Description: Interdisciplinary Care Planning requires members of the Interdisciplinary Treatment Team (IDT) to view the Care Plan as a resident centered collaborative effort - rather than as a staff centered document. Learn how to utilize the Care Plan to truly function as a team - working together to enhance the care and quality of resident life.')"; 
    db.execSQL(sql); 
    sql="INSERT INTO courses(title, instructor, length, rating, topic, subject, description) VALUES ('Behavior Management', 'Instructor: Keith Savell', 'length: 60', 'Rating: 5', 'Topic: Using Root Cause ', 'Subject:Learn to evaluate and modify the environment to support our residents with cognitive impairment as they age in place.', 'Description: Residents with dementia and delirium are constantly assessing the environment, looking for clues to help them understand where they are, who others around them are, what they are supposed to be doing and what is expected of them.')"; 
    db.execSQL(sql); 
    sql="INSERT INTO courses(title, instructor, length, rating, topic, subject, description) VALUES ('Communication: Powerful Tools For...', 'Instructor: Keith Savell', 'length: 60', 'Rating: 5', 'Topic: Powerful Tools For Communicating With Residents ', 'Subject:Encourage the Interdisciplinary Treatment Team (IDT) to work as a team and view the Care Plan as a resident-centered collaborative effort to enhance the care and quality of resident life.', 'Description: Interdisciplinary Care Planning requires members of the Interdisciplinary Treatment Team (IDT) to view the Care Plan as a resident centered collaborative effort - rather than as a staff centered document. Learn how to utilize the Care Plan to truly function as a team - working together to enhance the care and quality of resident life.')"; 
    db.execSQL(sql); 
} 

public ArrayList<Courses> getCourses() 
{ 
    db = getWritableDatabase(); 
    sql = "SELECT title, instructor, length, rating, topic, subject, description FROM courses"; 
    Cursor cursor = db.rawQuery(sql, null); 
    ArrayList<Courses> courses = new ArrayList<Courses>(); 

    while (cursor.moveToNext()) 
    { 
     Courses oCourses=new Courses(); 
     oCourses.title=cursor.getString(0); 
     oCourses.instructor=cursor.getString(1); 
     oCourses.length=cursor.getString(2); 
     oCourses.rating=cursor.getString(3); 
     oCourses.topic=cursor.getString(4); 
     oCourses.subject=cursor.getString(5); 
     oCourses.description=cursor.getString(6); 
     courses.add(oCourses);   
    } 

    db.close(); 
    cursor.close(); 
    return courses; 

}} 

и мой класс CourseDetails для показа элемент выбран:

public class CourseDetails extends Activity { 
protected TextView tTitle; 
protected TextView tInstructor; 
protected TextView tLength; 
protected TextView tRating; 
protected TextView tTopic; 
protected TextView tSubject; 
protected TextView tDescription; 

protected int courseId; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.course_details); 

    courseId = getIntent().getIntExtra("COURSE_ID", 0); 
    SQLiteDatabase db = **(new DBHelper(this))**.getWritableDatabase(); 
    Cursor cursor = db.rawQuery("SELECT emp._id, emp.title, emp.instructor, emp.length, emp.rating, emp.topic, emp.subject, emp.description, mgr.title managerTitle, mgr.instructor managerInstructor FROM courses emp LEFT OUTER JOIN courses mgr ON emp.rating = mgr._id WHERE emp._id = ?", 

      new String[]{""+courseId}); 

    if (cursor.getCount() == 1) 
    { 
      cursor.moveToFirst(); 

      tTitle = (TextView) findViewById(R.id.tTitle); 
      tTitle.setText(cursor.getString(cursor.getColumnIndex("title"))); 

      tInstructor = (TextView) findViewById(R.id.tInstructor); 
      tInstructor.setText(cursor.getString(cursor.getColumnIndex("instructor"))); 

      tLength = (TextView) findViewById(R.id.tLength); 
      tLength.setText(cursor.getString(cursor.getColumnIndex("length"))); 

      tRating = (TextView) findViewById(R.id.tRating); 
      tRating.setText(cursor.getString(cursor.getColumnIndex("rating"))); 

      tTopic = (TextView) findViewById(R.id.tTopic); 
      tTopic.setText(cursor.getString(cursor.getColumnIndex("topic"))); 

      tSubject = (TextView) findViewById(R.id.tSubject); 
      tSubject.setText(cursor.getString(cursor.getColumnIndex("subject"))); 

      tDescription = (TextView) findViewById(R.id.tDescription); 
      tDescription.setText(cursor.getString(cursor.getColumnIndex("description"))); 

    } 

}} 

действительно был бы признателен за вашу помощь

ответ

3

Сообщение об ошибке говорит вам именно то, что случилось. Вы звоните конструктор:

(new DBHelper(this)) 

, что означает, что конструктор подпись должна выглядеть следующим образом:

public DBHelper(Context context) 

Но единственный конструктор вы определили это один:

public DBHelper(Context context, String name, CursorFactory factory, 
    int version) 

Вам нужно вызвать конструктор с правильными аргументами или добавить новый конструктор с любыми аргументами, которые вы хотите.

+0

мог сказать мне, как я должен правильно вызвать конструктор без его заново? Большое спасибо! – JLouis

+0

Вам необходимо указать все отсутствующие параметры. См. Документацию, что означает параметры: http://goo.gl/1eGr4 –

1

Вы создаете DBHelper как это:

new DBHelper(this) 

Где "это" объект а CourseDetails.

Однако единственный конструктор вы поставляете является

public DBHelper(Context context, String name, CursorFactory factory, int version) 
+0

, но на самом деле не знаю, как правильно определить создателя с созданным DHBHelper без создания нового, спасибо за вашу помощь. – JLouis

Смежные вопросы