2013-03-28 2 views
0

SQLite 데이터베이스에서 국가 목록을 보유하고있는 Android 앱을 만들고 있습니다. 초기 화면에 목록이 표시됩니다. "편집 목록"을 누르면 새로운 활동이 시작되어 새로운 국가에 들어가거나 전체 목록을 삭제할 수 있습니다. 앱은 두 번째 활동에서 버튼을 클릭 할 때까지 완벽하게 작동합니다. 새 국가를 입력하고 추가를 클릭하면 앱에서 중지되었음을 알리는 메시지를 표시하지만 아직 내 데이터베이스에 추가됩니다. 내 모든 버튼 삭제와 동일합니다. 내 logcat에서 오류가 발생하지만 여전히 모든 것을 삭제합니다. 여기 새로운 활동에서 버튼을 누를 때 Android 앱이 충돌 함

public class EditList extends Activity 
{ 
    private DBManager db; 
    Cursor cursor; 
    EditText editCountry, editYear; 
    Button add, delete, back; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     editCountry = (EditText)findViewById(R.id.editcountry); 
     editYear = (EditText)findViewById(R.id.edityear); 
     add = (Button)findViewById(R.id.add); 
     delete = (Button)findViewById(R.id.delete); 
     back = (Button)findViewById(R.id.backmain); 

     //Open database and fill it with content, then close it 
     db = new DBManager(this); 
     db.openToWrite(); 

     add.setOnClickListener(buttonAddOnClickListener); 
     delete.setOnClickListener(buttonDeleteAllOnClickListener); 

     //------ 
     Log.i("Test", "back to main"); 

     //go back to the main list screen 
     back = (Button)findViewById(R.id.backmain); 
     back.setOnClickListener(new View.OnClickListener() 
     { 
      public void onClick(View v) 
      { 
       db.close(); 
       finish(); 
      } 
     }); 
    } 

    //insert new country button 
    Button.OnClickListener buttonAddOnClickListener = new Button.OnClickListener() 
    { 
     @Override 
     public void onClick(View arg0) 
     { 
      int year = Integer.parseInt(editYear.getText().toString()); 
      String country = editCountry.getText().toString(); 

      db.insert(year, country); 

      updateList(); 

      //clear text fields after use 
      editYear.setText(null); 
      editCountry.setText(null); 
     } 
    }; 

    //delete all button 
    Button.OnClickListener buttonDeleteAllOnClickListener = new Button.OnClickListener() 
    { 
     @Override 
     public void onClick(View arg0) 
     { 
      db.deleteAll(); 

      updateList(); 
     } 
    }; 

    private void updateList() 
    { 
     cursor.requery(); 
    } 
} 

이 발생하는 로그 캣 오류입니다 : 당신은 결코 당신의 커서를 인스턴스화하지있어

02-07 22:32:31.117: D/AndroidRuntime(2633): Shutting down VM 
02-07 22:32:31.117: W/dalvikvm(2633): threadid=1: thread exiting with uncaught exception (group=0xb4e35908) 
02-07 22:32:31.158: E/AndroidRuntime(2633): FATAL EXCEPTION: main 
02-07 22:32:31.158: E/AndroidRuntime(2633): java.lang.NullPointerException 
02-07 22:32:31.158: E/AndroidRuntime(2633):  at com.mypackage.msdassignment.EditList.updateList(EditList.java:90) 
02-07 22:32:31.158: E/AndroidRuntime(2633):  at com.mypackage.msdassignment.EditList.access$1(EditList.java:88) 
02-07 22:32:31.158: E/AndroidRuntime(2633):  at com.mypackage.msdassignment.EditList$1.onClick(EditList.java:68) 
02-07 22:32:31.158: E/AndroidRuntime(2633):  at android.view.View.performClick(View.java:4202) 
02-07 22:32:31.158: E/AndroidRuntime(2633):  at android.view.View$PerformClick.run(View.java:17340) 
02-07 22:32:31.158: E/AndroidRuntime(2633):  at android.os.Handler.handleCallback(Handler.java:725) 
02-07 22:32:31.158: E/AndroidRuntime(2633):  at android.os.Handler.dispatchMessage(Handler.java:92) 
02-07 22:32:31.158: E/AndroidRuntime(2633):  at android.os.Looper.loop(Looper.java:137) 
02-07 22:32:31.158: E/AndroidRuntime(2633):  at android.app.ActivityThread.main(ActivityThread.java:5039) 
02-07 22:32:31.158: E/AndroidRuntime(2633):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-07 22:32:31.158: E/AndroidRuntime(2633):  at java.lang.reflect.Method.invoke(Method.java:511) 
02-07 22:32:31.158: E/AndroidRuntime(2633):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
02-07 22:32:31.158: E/AndroidRuntime(2633):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
02-07 22:32:31.158: E/AndroidRuntime(2633):  at dalvik.system.NativeStart.main(Native Method) 
+0

온라인 90은 무엇입니까? –

+1

커서가 null 인 것 같습니다 – Mike

답변

1

여기에 오류가 발생 클래스에 대한 내 코드입니다. 당신은 그것을 선언하고 그것을 사용합니다. 그것은 실패 할 것이다.

+0

고마워요! 그게 문제를 해결했습니다. – colmulhall

관련 문제