마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

시간표 앱처럼 앱 재실행 시 내용이 유지되는 코드 두번째 질문입니다

0 추천
public class MainActivity extends Activity {
 
 //텍스트 뷰 이벤트를 위한 선언
 TextView day2_3;
 EditText subject,amount;
 View dialogView;
 EditText dlgEdtSubject,dlgEdtAmount;
 
 myDBHelper myHelper;
 SQLiteDatabase sqlDB;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  setTitle("일간 계획표");
  day2_3=(TextView)findViewById(R.id.day2_3);     
  
  //텍스트 뷰 클릭 시 이벤트 처리
  day2_3.setOnClickListener(new View.OnClickListener(){
   public void onClick(View v){
    day2_3.setBackgroundColor(Color.RED);//텍스트 뷰 배경 색깔 빨간색으로 변경        
    dialogView=(View)View.inflate(MainActivity.this, R.layout.day_subject, null);
    AlertDialog.Builder dlg=new AlertDialog.Builder(MainActivity.this);
    dlg.setTitle("내용 작성"); //다이얼로그의 제목
    dlg.setIcon(R.drawable.ic_launcher); //다이얼로그 옆의 안드로보이 이미지
    dlg.setView(dialogView); //다이얼로그를 띄운다
    
    dlg.setPositiveButton("확인",
        new DialogInterface.OnClickListener(){
       public void onClick(DialogInterface dialog,int which){
        dlgEdtSubject=(EditText)dialogView.findViewById(R.id.dlgEdt1);
             sqlDB=myHelper.getWritableDatabase();
      sqlDB.execSQL("INSERT INTO groupTBL VALUES('"
        +dlgEdtSubject.getText().toString()+"');");
      sqlDB.close();     
        day2_3.setText(dlgEdtSubject.getText().toString());
        day2_3.setBackgroundColor(Color.WHITE);
       }
      });    
      dlg.setNegativeButton("취소",
        new DialogInterface.OnClickListener(){
       public void onClick(DialogInterface dialog,int which){
        day2_3.setBackgroundColor(Color.WHITE);
       }
      });     
      dlg.show();

 

//그리고 다음 코드는 myDBHelper클래스에 코딩한 소스코드입니다

 

public class myDBHelper extends SQLiteOpenHelper{
    public myDBHelper(Context context){
     super(context,"groupDB",null,1);
    }
   
    @Override
    public void onCreate(SQLiteDatabase db) {
     // TODO Auto-generated method stub
     db.execSQL("CREATE TABLE groupTBL(gName CHAR(20)PRIMARY KEY,gNumber INTEGER);");
    }
   
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
     // TODO Auto-generated method stub
     db.execSQL("DROP TABLE IF EXISTS groupTBL");
     onCreate(db);
    }
     
   }

텍스트 뷰를 클릭하면 다이얼로그 창이 뜨고 에딧텍스트에 내용을 적은 후 확인을 누르면 텍스트 뷰에 내용이 나타나는 코드

를 짰습니다

그리고 데이터베이스를 적용시켜 앱 재실행 시에도 내용 유지시키려는데 실패했습니다

코드 분석을 계속하고 있으나 원인을 알지 못해 해결하지 못하고 있습니다 도와주세요

위의 코드는 일부 코드입니다

김가람 (240 포인트) 님이 2014년 4월 9일 질문

1개의 답변

+1 추천
일단 DB에 데이타가 잘 들어갔는지 확인해보세요.

잘 읽고 써진다면 DBhelper의 onUpgrafe부분이 문제네요

무조건 지울테니 -_-

old랑 new버전 체크해서 차이가나면 지우세요.
q1212 (26,020 포인트) 님이 2014년 4월 10일 답변
...