2013-06-15 2 views
0

SimpleCursorAdapter를 사용하여 구현 된 ListView가있는 활동이 있습니다. ListView는 SQLite 데이터베이스의 항목을 나열합니다. 문제는 MainActivity의 버튼을 누르면이 활동에 도달한다는 것입니다. 이 시점에서 데이터베이스에 요소가 없으면 응용 프로그램이 "작동을 재개 할 수 없음"이라는 오류를 표시하면서 충돌합니다. 그러나 데이터베이스에 적어도 하나의 요소가있는 경우이 활동은 잘 작동합니다.이 문제를 해결하는 방법을 알고 싶습니다.Android : 활동을 재개 할 수 없습니다. java.lang.RuntimeException

다음은 전체 활동 코드입니다. 도와주세요.

참고 : 다른 응용 프로그램 중 하나에서 정확히 똑같은 작업을 수행했는데, 여기서 볼 수있는 행의 다른 색칠을 제외하고 제대로 작동했습니다. 당신의 onresume의 MTD에서

package com.tintin.scheduler_3; 

import android.app.ListActivity; 
import android.content.Intent; 
import android.database.Cursor; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.support.v4.widget.SimpleCursorAdapter; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.ListView; 

public class List_Course extends ListActivity { 
DatabaseHelper db; 
SimpleCursorAdapter dataAdapter; 

protected void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.course_list); 

    Button add = (Button) findViewById(R.id.add); 
    add.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      startActivity(new Intent(List_Course.this, Add_Course.class)); 
     } 
    }); 
    Log.v("Button", "On Click Done"); 
    db = new DatabaseHelper(List_Course.this); 
    Log.v("Button", "On Click Done2"); 
    displayList(); 
    Log.v("Button", "On Click Done3"); 
    db.close(); 
} 

public void onResume(){ 
    Cursor newCursor = db.getAllCourses(); 

    dataAdapter.changeCursor(newCursor); 
    super.onResume(); 
    db.close(); 
} 

public void displayList(){ 
    Cursor cursor = db.getAllCourses(); 
    if(cursor.getCount() == 0)return; 
    String from [] = new String[] {db.colName,db.colDisplay}; 
    int to[] = new int[] {R.id.textView1, R.id.textView2}; 
    dataAdapter = new SimpleCursorAdapter(this, R.layout.listitem, cursor, from, to, 0){ 
     public View getView(int position, View convertView, ViewGroup parent){ 
      final View row = super.getView(position, convertView, parent); 
      if(position % 2 == 0) 
       row.setBackgroundColor(Color.parseColor("#D8D8D8")); 
      else 
       row.setBackgroundColor(Color.parseColor("#D0D0D0")); 

      return row; 
     } 
    }; 
    ListView lv = getListView(); 
    lv.setAdapter(dataAdapter); 
    registerForContextMenu(lv); 
    cursor.close(); 
    db.close(); 
} 

} 
+0

왜 onResume() 중에 db를 닫고 있습니까? Btw db.getAllCourses()가 반환하는 것은 무엇입니까? – Rob013

답변

0

super.onResume(); 호출은 5 월 그렇게 처음 super.onresume() 호출을 실행하기 위해 더 많은 시간을 소요하고 커서 코드 처음

Cursor newCursor = db.getAllCourses(); 
dataAdapter.changeCursor(newCursor); 

으로해야합니다 . 이것이 도움이 되길 바랍니다.

관련 문제