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

intent질문 있어요, 고수님

0 추천

안녕하세요. 질문이 있어서 이렇게 글을 씁니다.

우선적으로 현재 동작되는 버튼 기능들은,

화면에서 추가버튼을 누르면 TextView에 현재 날짜와 시간을 뿌려줍니다.

바로 db에 저장되고,

조회버튼을 누를경우 위와같은 TextView에 db값을 화면에 뿌려줍니다.

하지만 여기서 제가 구현코자 하는 것은

같은 TextView에 아닌 다른 xml을 하나 더 만들어서 그쪽 화면에 뿌려주고싶은데요.

질문1, 이런 경우에도 intent를 써야하는건지 궁금합니다.(초보적인 질문 죄송합니다.)

           현재 코딩은 intent가 아닌 버튼이 클릭됐을때 setContentView를 이용하여 해당 xml아이디를 읽어서 쓰고 있씁니다. 제대로 하는건지 모르겠습니다.ㅠ  ( 코딩 중 노랑바탕부분입니다. )

질문2. 현재 날짜와 시간을 뿌려주는 것은  TextView입니다. 새로 만들 xml애도 똑같이 TextView로 해야만 값이 나오는건가요? 왜냐하면 나중에 추후 데이터를 추가 삭제해야할 일이 빈번할것 같아서 TextVIew로는 한계가 있을 것 같아서입니다. 

 

질문3. 하나의 액티비티에서 2개이상의 xml 레이아웃을 쓸 수 있는건가요?(질문2와 관련)

풀어서 설명드리자면, 하나의 화면에서는 날짜와 시간값을 읽어들이고, 조회버튼을 클릭했을 경우,

다른 화면의 xml로 구현코자 하는 것입니다.

   

 

 

     

 

package com.example.last;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
   
 EditText nameEdit;
 EditText ageEdit;
 TextView result;
 
 DBHelper dbHelper;
 
 final static String dbName = "Person.db";
 final static int dbVersion = 2;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
       // nameEdit = (EditText)findViewById(R.id.nameedit);
       // ageEdit = (EditText)findViewById(R.id.ageedit);
        result = (TextView)findViewById(R.id.result);
       
        dbHelper = new DBHelper(this, dbName, null, dbVersion);
    }
   
    public void mOnClick(View v){
     SQLiteDatabase db;
     String sql;
     switch (v.getId()) {
  case R.id.insert: //추가 버튼(insert)
  
   TimeZone timezone = TimeZone.getTimeZone("Etc/GMT-9");
   TimeZone.setDefault(timezone);
    
   SimpleDateFormat formater = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss", Locale.KOREA);
   Date current = new Date();
    
   String mtime = formater.format(current);
   System.out.println(mtime);
   //result.setText(result.getText().toString() + "\n"+ mtime + "  dBm");
   result.setText(mtime + " bbb");
  
      //String name = nameEdit.getText().toString();
      //String age = ageEdit.getText().toString();
      String Data = result.getText().toString();
     
      db = dbHelper.getWritableDatabase();
      sql = String.format("INSERT INTO person VALUES(NULL, '%s', '%s');", Data, 22);
      db.execSQL(sql);  
      //result.append("\nInsert Success");
      Toast toast= Toast.makeText(this, "Insert Success", Toast.LENGTH_SHORT);
      toast.show();
     

   break;

  case R.id.delete: //전체삭제 버튼(delete)
   db = dbHelper.getWritableDatabase();
   sql = "DELETE FROM person;";
   db.execSQL(sql);
   result.append("\nDelete Success");
   break;
 
  case R.id.update: //전체수정 버튼(update)
   db = dbHelper.getWritableDatabase();
   sql = "UPDATE person SET age=20;";
   db.execSQL(sql);
   result.append("\nUpdate Success");
   break;
 
  case R.id.select: //조회 버튼(select)
  
   setContentView(R.layout.display_main);
  
   db = dbHelper.getReadableDatabase();
   sql = "SELECT * FROM person;";
   Cursor cursor = db.rawQuery(sql, null);
   if(cursor.getCount() > 0){
    while(cursor.moveToNext()){
     result.append(String.format("\n Date = %s, Power = %s",
         cursor.getString(1), cursor.getString(2)));
    }
   }else{
    //result.append("\n조회결과가 없습니다.");
    Toast toast2= Toast.makeText(this, "NOT Data!!", Toast.LENGTH_SHORT);
    toast2.show();
   }
   cursor.close();
   break;  
  }
     dbHelper.close();
    }
   
    class DBHelper extends SQLiteOpenHelper{

     //생성자 - database 파일을 생성한다.
  public DBHelper(Context context, String name, CursorFactory factory, int version) {
   super(context, name, factory, version);
  }

  //DB 처음 만들때 호출. - 테이블 생성 등의 초기 처리.
  @Override
  public void onCreate(SQLiteDatabase db) {
   db.execSQL("CREATE TABLE person (_id INTEGER PRIMARY KEY AUTOINCREMENT," +
     " Datum TEXT, power INTEGER);");
   result.append("\nperson 테이블 생성 완료.");
  }

  //DB 업그레이드 필요 시 호출. (version값에 따라 반응)
  @Override
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
   db.execSQL("DROP TABLE IF EXISTS person");
   onCreate(db);
  }
    }
}

 

 

 

앤드류이드 (6,190 포인트) 님이 2013년 4월 26일 질문
앤드류이드님이 2013년 4월 26일 태그 변경

1개의 답변

0 추천
 
채택된 답변
짧은 지식으로 답글 남깁니다.

질문1, 같은 액티비티내에서는 intent를 쓸 필요가 없겠죠..내부 class로 처리하시면 될 듯 합니다.

질문2. text를 출력할 수 있는 view는 많은데 textview가 무난할듯 합니다.

질문3. 제 생각으로는 질문자 님 께서 하는 방식으로는 되긴하나..setContentView는 전체 레이아웃을 바꿔 버릴텐데 버튼들은 살아있어야 하지 않나요?? 이렇게 안하고 하나의 xml에서 visibility로 변환을 하시던가 fragment를 사용하시면 될 듯 합니다.
노예의집 (23,370 포인트) 님이 2013년 4월 27일 답변
앤드류이드님이 2013년 4월 29일 채택됨
...