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

시간표처럼 앱 재실행 시 텍스트 뷰 내용이 유지되는 소스코드 질문합니다

0 추천
//텍스트 뷰 클릭 시 이벤트 처리
  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);            
      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(); 

//위에 건 제 코드 , 밑에 건 DB예제입니다

public class MainActivity extends Activity {
 
 myDBHelper myHelper;
 EditText edtName,edtNumber,edtNameResult,edtNumberResult;
 Button btnInit,btnInsert,btnSelect;
 SQLiteDatabase sqlDB;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  setTitle("가수 그룹 관리 DB");
  
  edtName=(EditText)findViewById(R.id.edtName);
  edtNumber=(EditText)findViewById(R.id.edtNumber);
  edtNameResult=(EditText)findViewById(R.id.edtNameResult);
  edtNumberResult=(EditText)findViewById(R.id.edtNumberResult);
  btnInit=(Button)findViewById(R.id.btnInit);
  btnInsert=(Button)findViewById(R.id.btnInsert);
  btnSelect=(Button)findViewById(R.id.btnSelect);
  
  myHelper=new myDBHelper(this);
  btnInit.setOnClickListener(new View.OnClickListener(){
   public void onClick(View v){
    sqlDB=myHelper.getWritableDatabase();       
    myHelper.onUpgrade(sqlDB, 1, 2);
    sqlDB.close();
   }
  });
  
  btnInsert.setOnClickListener(new View.OnClickListener(){
   public void onClick(View v){
    sqlDB=myHelper.getWritableDatabase();
    sqlDB.execSQL("INSERT INTO groupTBL VALUES('"
      +edtName.getText().toString()+"',"
      +edtNumber.getText().toString()+");");
    sqlDB.close();
    Toast.makeText(getApplicationContext(), "입력됨", 0).show();
   }
  });
  
  btnSelect.setOnClickListener(new View.OnClickListener(){
   public void onClick(View v){
    sqlDB=myHelper.getReadableDatabase();
    Cursor cursor;
    cursor=sqlDB.rawQuery("SELECT*FROM groupTBL;",null);
    
    String strNames="그룹 이름"+"\r\n"+"________"+"\r\n";
    String strNumbers="인원"+"\r\n"+"________"+"\r\n";
    
    while (cursor.moveToNext()){
     strNames +=cursor.getString(0)+"\r\n";
     strNumbers +=cursor.getString(1)+"\r\n";
    }
    edtNameResult.setText(strNames);
    edtNumberResult.setText(strNumbers);
    
    cursor.close();
    sqlDB.close();
   }
  });
 }
 
 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);
  }
  
 }
}

안드로이드 데이터베이스 예제를 따라해본 후 제 앱에 적용시키려고 합니다

제 앱의 코드는 텍스트 뷰를 터치하면 다이얼로그 창이 뜨고 내용을 작성하면 텍스트 뷰에 내용이 작성되는 코드이고

제가 따라한 데이터베이스 예제는 에딧텍스트에 내용작성 후 입력버튼을 누르면 데이터베이스에 저장되는 코드입니다

두 코드 모두 올리겠습니다 저는 두 코드를 결합할 방법을 잘 몰라서 질문합니다

익명사용자 님이 2014년 4월 4일 질문

1개의 답변

+1 추천

코드를 이렇게 몽땅 올려두면 답을 할 엄두가 안 납니다;

아무튼 다이얼 로그가 뜨고 "확인"을 클릭할 때 DB에 저장하는 작업을 하면 되겠네요..

DB를 위한 클래스를 따라한 예제와 같이 생성하고, 아래와 같은 식으로 작업하면 되겠네요...

대충 짜집기 한거라 오류가 날 수도 있지만 수정가능한 오류라 생각합니다..

    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('"
      +edtName.getText().toString()+"',"
      +edtNumber.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(); 

 

인연 (31,880 포인트) 님이 2014년 4월 7일 답변
...