오늘은 getColor 메서드에 대해 포스팅 합니다.


getColor 메서드는 안드로이드 value폴더에 colors.xml에 저장된


컬러값들을 가져오는 메서드입니다.


colors.xml에 저장할 시, 마치 전역변수처럼 값들을 호출 할 수 있기때문에


자주 쓰입니다. 쓰는법은 아래와 같습니다.


int color = context.getResource().getColor(R.color.자신의ID값); 


만약 액티비티 메서드 안이라면, 이미 context정보가 있기때문에


int color = (this).getResource().getColor(R.color.자신의ID값);


이렇게 쓰입니다. 하지만 API23에서 getColor 메서드는 depercated 되었습니다.


따라서 getColor 메서드 대신 아래의 메서드를 사용하여 deprecated에 대응해야 합니다.


int color = ContextCompat(context,R.color.자신의ID값);


마찬가지로 액티비티 메서드 안 이라면, context 대신에 this를 쓰면 되겠지요.





포스팅이 도움 되셨다면, 커피 한잔 후원해주세요!
더 좋은 포스팅 작성에 큰 힘이 됩니다.

Buy me a coffeeBuy me a coffee

해당 메서드는 액티비티를 상속 받았을시 사용가능하다.


비슷한 메서드로는 startActivity가 있다. 해당 메서드는 매개변수로 intent를 받는다.


기존 액티비에에서 새로운 액티비티를 생성할시 사용한다. 이때 기존 액티비티의 정보를


새로운 액티비티로 전달 할 시 intent객체에 putExtra 메서드로 정보들을 전달한다. 


오늘 알아볼 메서드 startActivityForResult는 메서드 이름에서도 알 수 있드시, 액티비티를 생성한 후


생성한 액티비티가 종료됬을시, 기존 액티비티에게 신호를 주기 위한 메서드 이다.


처음 액티비티의 이름을 MainActivity, 생성할 액티비티 이름을 SubActivity라 칭하겠다.


startActivityForResult 메서드의 매개변수는 intent와,


하나의 메인 액티비티에서 여러개의 액티비티를 실행 시켰을 경우 구분지을 int형 변수 


이렇게 2개를 받는다. 신호를 받은 후 처리 하는곳은 onActivityResult 메서드 이다. 


사용방법은 이렇다. 


MainActivity.java


....


...

Intent intent = new Intent(MainActivity.this,SubActivity.class);

intent.putExtra("code", 1);    //이런식으로 액티비티에 정보를 보낸다.

startActivityForResult(intent , 0);


@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data){

super.onActivityResult(requestCode, resultCode, data);


// ....... 여기서 하고싶은 행위를 작성하면 된다.


}



SubActivity.java


....


...


@Override

protected void onDestroy(){      //액티비티가 종료될 때의 메서드

super.onDestroy();

setResult( 0 ); // 여기에 넣는 int형 정수는 MainActivity의 onActivityResult안에서 requestCode로 들어간다.

}




포스팅이 도움 되셨다면, 커피 한잔 후원해주세요!
더 좋은 포스팅 작성에 큰 힘이 됩니다.

Buy me a coffeeBuy me a coffee




  안드로이드 UI의 상태나 가벼운 정보등은 SharedPreference(이하 S.P로 칭한다.)를 사용한다. 


db와 달리 번거롭지않고 사용하기 간편하기 때문이다. 


하지만 단점이 있다. xml형태로 저장하므로, 데이터 누적이 많아 지면 DB에 비해 성능이 떨어진다.


성능이 떨어지는 이유는 당연 인덱싱 문제가 아닐까 싶다. db같은 경우는 query로 손쉽게 원하는 데이터를 뽑아와


작업하지만, S.P 방식은 데이터 전부를 뽑아와 key값을 하나 하나 비교하기 떄문이라고 생각한다.


즉, 사용목적에 따라 두가지 기능(S.P , DB)을 적절히 사용 할 필요가 있겠다.


이번 포스팅은 db를 사용 할 것이다. 안드로이드는 SQLite이라는 내부 db를 제공해준다.


기본적인 셋팅은 아래와 같다.


public class MommooDB extends SQLiteOpenHelper {
public MommooDB(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {

}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
onCreate(db);
}

} 


SQLiteOpenHelper클래스를 상속받은 자신의 클래스를 만든다.


필수적으로 부모생성자와, onCreate, onUpgrade 이렇게 3가지를 적어줘야 한다.


필수 부모 생성자로 Context, 디비명, 커서, 버전을 아규먼트로 넘겨줘야한다.


여기서 Context는 안드로이드의 Context정보를 의마하고, 디비명은 자신의 데이터베이스 파일명을 의미한다.


커서는 db데이터를 다룰 때 쓰는데, 


자신의 만든 커스텀 커서가 있을경우 선언해주고 기본 커서를 사용할 경우는 null로 해준다.


마지막 매개변수는 버전이다. 같은 디비명이라도 버전이 틀리면 다른 디비로 간주 할 수 있다.


onCreate메서드는 혹, 자신이 호출하는 db명이 없는 경우 호출된다. 즉 새로운 디비를 만들때 


CREATE DB명 느낌보다는, db이름을  생성자에의 아규먼트로 넣어 실행했을 경우에


db명이 없을경우 onCreate메서드가 호출되고, db명이 있는경우는 호출하지 않는다.


따라서 db안의 table을 onCreate안에다가 관리하면 편하다.


onUpgrade메서드는 db명은 있지만 버전이 다른 경우에 호출돤다. 


즉 자신이 만든 db에 새로운 table을 추가한다거나


삭제같은 경우가 있을때, 자신의 디비의 버전을 올려주고 메서드 안에다가 새로운 작업을 하면 되겠다.


필자 같은 경우에 필요한 DB 정보는 id와 pass 데이터다. id와 pass 칼럼을 가지는 테이블을 작성해보겠다.


다음 포스팅때 마저 하겠다.




포스팅이 도움 되셨다면, 커피 한잔 후원해주세요!
더 좋은 포스팅 작성에 큰 힘이 됩니다.

Buy me a coffeeBuy me a coffee

오늘 포스팅 할 내용은 자바의 enum 예약어 이다.


자바에는 크게 2개의 데이터 타입이 존재한다. 기본형과 참조형.


enum은 두개의 데이터 타입중 참조형이다.


enum은 참조형이지만, int 형 같은 기본 자료형 처리와 같은 성능을 발휘한다.


따라서 내부 처리속도가 빠를뿐더러, 코드 가독성을 높이고 의미를 부여할 수 있는 장점이 있다.


간단한 enum예시는 아래와 같이 쓴다.


public enum Units {Marine,SCV,Zergling};
Units unit = Units.Marine; // 마린을 선택할경우.
switch(unit){
  case Marine:
  break;
  case SCV :
  break;
  case Zergling :
  break;
}


예제와 같은 분기 로직을 처리 할때 사용자 입장에서 코드 가독성과 의미가 부여됬음을 쉽게 알 수 있다.


Enum에 대해 좀 더, 자세한 사항을 알고 싶다면 아래의 포스팅을 읽기를 권한다.




자바 Enum 자료형 1편 - http://mommoo.tistory.com/57



'Java' 카테고리의 다른 글

Java foreach문(향상된 for문)  (0) 2016.03.30
JAVA Static이란?  (2) 2016.03.29
JAVA - 익명클래스(Anonymous class)란?  (3) 2016.01.20
JAVA의 삼항연산자  (4) 2015.12.11
JAVA의 생성자 (2)  (2) 2015.11.17

포스팅이 도움 되셨다면, 커피 한잔 후원해주세요!
더 좋은 포스팅 작성에 큰 힘이 됩니다.

Buy me a coffeeBuy me a coffee

+ Recent posts