Android
2011. 7. 14. 23:18
간만에 포스팅을 합니다. 바쁜척하느라 매일 오긴오는데
와서 제 블로그를 제가 눈팅하는 그런..짓을 합니다 -_-;
무튼, Activity와 Context 는 비슷해 보이면서도 다릅니다. 저도 아직 두 가지 명확하게 설명을 할
수준은 못되지만, 명확한 개념을 알고싶으시면 조금만 수고를 하셔서 검색을 하시면
다른 훌륭하신분들의 글이 많이 올라와 있습니다.
먼저 Activity 는 안드로이드 어플리케이션의 가장 기본적인 블록으로 전체적으로 한 화면 이라고
보시면 됩니다. 한 화면의 View와 UI 를 뿌리고 관리하며 터치 등 사용자의 입력을 감지합니다.
한 화면이기 때문에 다음 화면으로 넘어가면 거기서 새로운 액티비티가 생성되고 관리하게 됩니다.
반면 Context는 핵심 부품같은 존재로 여러 액티비티의 리소스를 접근하거나 공유할 수 있게
해줍니다. 설명이 많이 부족하네요 이거 -_-..
현재 Activity와 Context를 얻어서 사용해야 할 때가 있습니다. 다이얼로그나 팝업등을 띄울 때인데요
팝업을 예로들면 어느 앱에 로그인을 하려는데 그 로그인창이 팝업창으로 되어 있다면 컴퓨터는
멍청해서 알아서 메인화면 위로 로그인창을 띄우지 못하고 코드상으로 꼭 메인화면 위에서 띄워라
라고 써줘야 합니다.
popupview = View.inflate(getApplicationContext(), R.layout.sidepopup, null);
이게 그 예인데요 팝업뷰에 파라미터로 Context, int, ViewGroup 이 들어갑니다.
다른거는 넘어가고 Context를 보면 getApplicationContext() 이게 현재 화면의 context를
지정하는 것으로, 저 popupview는 이제 메인화면 위에 뜬다는 소리입니다. 메인화면의
Context를 받았기 때문이죠.
안드로이드 입문하는 소스들을 보면 대부분 한 클래스에서 모든걸 끝내어 기능만 알아보고 넘어가는
식이 많은데, 이제 그보다 큰 것을 하다보면 위와같이 현재 화면, 또는 현재 클래스에서 모든
작업을 하기란 불가능합니다.
Activity를 예로들어보면 많이 보시는 간단한 Toast를 봐도
세개의 파라미터 중에 첫번째가 액티비티 입니다. 짧은 예제에는 여기에 대부분 this나
클래스명.this 이런식으로 사용하시는데요. 이게 이 토스트가 뜰 화면을 지정하는 것입니다.
위에 예제의 경우 액티비티가 있는 클래스가 아닌 곳에서 띄우려니, 띄울곳에서 액티비티를 얻어
넘겨주어 그 액티비티를 받아 사용하는 것입니다. 그럼 넘겨준 액티비티에서 뜨겠죠?
이와같이 넘기거나 사용할 때 현재 액티비티나 Context를 받아야합니다. 받는 방법은
Activity 는
Activity act;
act = 현재클래스명.this;이고
Context는
Context mContext;
mContext = getApplicationContext();
이런식으로 담아두고, 이 변수로 다른 클래스에 넘기기도하고 가져다 쓰기도 하고 그러시면 됩니다
솔직히 100% 아는 내용이 아니라 횡설수설했는데.. 암튼 도움이되셨길 바랍니다.
'Android' 카테고리의 다른 글
안드로이드] 팝업뷰 보다 깔끔한 팝업모양 액티비티 만들기 (14) | 2011.07.19 |
---|---|
안드로이드] 팝업뷰 띄우기 (0) | 2011.07.18 |
안드로이드] 현재 액티비티, 다른 액티비티 종료하기 (15) | 2011.06.27 |
안드로이드] 리스트 알아보기 (0) | 2011.06.25 |
안드로이드] 안드로이드 액티비티의 라이프 사이클 (0) | 2011.06.02 |
Android
2011. 6. 27. 22:46
안드로이드를 하다보면 액티비티가 계속 쌓이는 경우가 있다. 이 경우는 시스템 적으로 아무래도
부담이되고, 물론 눈에 보일정도로 그런다기보다 계속 그렇게 쌓다보면 뒤로가기를 한참을 눌러야
밖으로 빠져나가게 되는 불상사가 생긴다.
이럴 경우 현재 액티비티나 현재액티비티가 아닌 다른 액티비티를 종료시켜서 액티비티를 줄이는
방법이있는데, 우선 현재 액티비티를 죽이는 방법은 간단하다.
어떠한 작업을 완료하고 액티비티를 종료하기를 원한다면 작업 완료 다음줄에
이것만 적어주면 된다. 이렇게 되면 저 함수를 만나는 즉시 현재 액티비티가 종료된다.
하지만 A 액티비티에서 B액티비티를 갔는데 A액티비티를 죽이고 싶다면 이렇게 하면된다.
우선 A 클래스에
라고 스테틱으로 액티비티를 선언한다. 그리고 onCreate 안에
이렇게, 액티비티 객체에 현재 클래스를 담아준다. 그럼 이제 B클래스로가서
이렇게 aActivity 라는 객체를 만드는데 그 객체는 Aclass의 스테틱변수인 AActivity를
넣어 둔다는 의미이다 보면 복잡해 보이는데 글로 쓰면 이렇다 .
이정도 순서이다. 헷갈리기 쉬울 것 같다.
그 다음 아래에 이렇게 만든 객체를 피니시하면된다
이렇게 써주면 B클래스에서 아까 앞에 A액티비티를 종료 시킬 수 있다.
부담이되고, 물론 눈에 보일정도로 그런다기보다 계속 그렇게 쌓다보면 뒤로가기를 한참을 눌러야
밖으로 빠져나가게 되는 불상사가 생긴다.
이럴 경우 현재 액티비티나 현재액티비티가 아닌 다른 액티비티를 종료시켜서 액티비티를 줄이는
방법이있는데, 우선 현재 액티비티를 죽이는 방법은 간단하다.
어떠한 작업을 완료하고 액티비티를 종료하기를 원한다면 작업 완료 다음줄에
finish();
이것만 적어주면 된다. 이렇게 되면 저 함수를 만나는 즉시 현재 액티비티가 종료된다.
하지만 A 액티비티에서 B액티비티를 갔는데 A액티비티를 죽이고 싶다면 이렇게 하면된다.
우선 A 클래스에
public static Activity AActivity;
라고 스테틱으로 액티비티를 선언한다. 그리고 onCreate 안에
AActivity = Aclass.this;
이렇게, 액티비티 객체에 현재 클래스를 담아준다. 그럼 이제 B클래스로가서
Aclass aActivity = (Aclass)Aclass.AActivity;
이렇게 aActivity 라는 객체를 만드는데 그 객체는 Aclass의 스테틱변수인 AActivity를
넣어 둔다는 의미이다 보면 복잡해 보이는데 글로 쓰면 이렇다 .
A클래스 A클래스객체 = (A클래스)A클래스.A클래스에서 스태틱 액티비티 변수
이정도 순서이다. 헷갈리기 쉬울 것 같다.
그 다음 아래에 이렇게 만든 객체를 피니시하면된다
aActivity.finish();
이렇게 써주면 B클래스에서 아까 앞에 A액티비티를 종료 시킬 수 있다.
'Android' 카테고리의 다른 글
안드로이드] 팝업뷰 띄우기 (0) | 2011.07.18 |
---|---|
안드로이드] 현재 Activity 와 Context 얻는 방법 (6) | 2011.07.14 |
안드로이드] 리스트 알아보기 (0) | 2011.06.25 |
안드로이드] 안드로이드 액티비티의 라이프 사이클 (0) | 2011.06.02 |
안드로이드] return 의 기능 (0) | 2011.05.24 |
Android
2011. 6. 25. 20:54
안드로이드뿐만아니라 작은 스마트폰에서 여러개를 나타내는 방법은 리스트만큼 좋은 것이
없을 것이다. 그만큼 자주쓰는 것이라, 스마트폰 쪽 개발을 한다면 리스트뷰를 안쓸수가없다.
이번 포스팅에는 리스트 사용방법의 개념을 알아보기로 한다.
먼저 리스트는 기본 리스트가 있고 사용자가 모양이나 구성등을 이쁘게 꾸며서 만드는
커스텀 리스트가 있다.
기본 리스트 예제부터 보자
그것을 뿌릴 ListView가 두번째 그리고 ArrayList의 내용을 ListView에 붙여줄 연결고리
역할을 하는 ArrayAdapter 라는 것이 필요하다.
위에서 보면 일단 ArrayList<String> 에 값들을 넣어야 하는데 문자형을 넣기 때문에 String을
써 주었다. 그리고 ArrayList 객체인 al 에 add 매소드를 이용하여 문자들을 넣어준다.
저 add하나가 한 항목을 나타낸다고 보면 된다.
그리고 ArrayAdapter<String> 를 생성하는데 문자열을 붙여줌으로 똑같이 String으로 써주고
() 안에 세가지가 들어간다, 처음엔 어디다 뿌리는건지 Context , 그리고 리스트의 타입 , 마지막으로
리스트뷰에 실질적으로 붙일 어레이 리스트객체를 써준다. Context는 나도 개념적으로 부족하여
이것이 뿌려질 화면 정도로 알고 있다. 현재는 현재 화면에 뿌려지기 떄문에 this라고 썼다.
두번째는 리스트 타입인데 지금 쓴 android.R.layout.simple_list_item_1 이것은
리스트 한 칸에 기본적으로 한 줄로 나타낸 다는 의미이다.
기본적으로 자주쓰는 몇개를 예로들면
simple_list_item_2 > 리스트 한 항목이 두 줄로 이루어 진다.
simple_list_item_checked > 리스트 오른쪽으로 체크박스가 달린다
simple_list_item_single_choice > 리스트 오른쪽으로 라디오버튼이 달린다
simple_list_item_multiple_choice > 리스트 오른쪽으로 체크박스가 달리는데 중복 체크가 가능하다.
이정도가 있다.
그 다음 리스트뷰 객체인 lv 에 setAdapter() 메소드를 쓰고 파라미터로 ArrayAdapter 객체인
aa를 넣어준다. 그럼 리스트뷰에 아답터가 리스트어레이 객체들을 붙여준다 그럼 화면에
뿌려지게 되는 것이다.
이렇게 붙게 된다.
없을 것이다. 그만큼 자주쓰는 것이라, 스마트폰 쪽 개발을 한다면 리스트뷰를 안쓸수가없다.
이번 포스팅에는 리스트 사용방법의 개념을 알아보기로 한다.
먼저 리스트는 기본 리스트가 있고 사용자가 모양이나 구성등을 이쁘게 꾸며서 만드는
커스텀 리스트가 있다.
기본 리스트 예제부터 보자
public class ListExamActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ListView lv = (ListView)findViewById(R.id.list); ArrayList먼저 리스트를 만드려면 세가지의 구성이 필요하다, 각 항목의 객체가 들어있는 ArrayList와al = new ArrayList (); al.add("어레이리스트에"); al.add("add를 이용하여"); al.add("리스트에 들어가는 "); al.add("값들을 써줍니다."); ArrayAdapter aa = new ArrayAdapter (this, android.R.layout.simple_list_item_1, al); lv.setAdapter(aa); } }
그것을 뿌릴 ListView가 두번째 그리고 ArrayList의 내용을 ListView에 붙여줄 연결고리
역할을 하는 ArrayAdapter 라는 것이 필요하다.
위에서 보면 일단 ArrayList<String> 에 값들을 넣어야 하는데 문자형을 넣기 때문에 String을
써 주었다. 그리고 ArrayList 객체인 al 에 add 매소드를 이용하여 문자들을 넣어준다.
저 add하나가 한 항목을 나타낸다고 보면 된다.
그리고 ArrayAdapter<String> 를 생성하는데 문자열을 붙여줌으로 똑같이 String으로 써주고
() 안에 세가지가 들어간다, 처음엔 어디다 뿌리는건지 Context , 그리고 리스트의 타입 , 마지막으로
리스트뷰에 실질적으로 붙일 어레이 리스트객체를 써준다. Context는 나도 개념적으로 부족하여
이것이 뿌려질 화면 정도로 알고 있다. 현재는 현재 화면에 뿌려지기 떄문에 this라고 썼다.
두번째는 리스트 타입인데 지금 쓴 android.R.layout.simple_list_item_1 이것은
리스트 한 칸에 기본적으로 한 줄로 나타낸 다는 의미이다.
기본적으로 자주쓰는 몇개를 예로들면
simple_list_item_2 > 리스트 한 항목이 두 줄로 이루어 진다.
simple_list_item_checked > 리스트 오른쪽으로 체크박스가 달린다
simple_list_item_single_choice > 리스트 오른쪽으로 라디오버튼이 달린다
simple_list_item_multiple_choice > 리스트 오른쪽으로 체크박스가 달리는데 중복 체크가 가능하다.
이정도가 있다.
그 다음 리스트뷰 객체인 lv 에 setAdapter() 메소드를 쓰고 파라미터로 ArrayAdapter 객체인
aa를 넣어준다. 그럼 리스트뷰에 아답터가 리스트어레이 객체들을 붙여준다 그럼 화면에
뿌려지게 되는 것이다.
이렇게 붙게 된다.
'Android' 카테고리의 다른 글
안드로이드] 현재 Activity 와 Context 얻는 방법 (6) | 2011.07.14 |
---|---|
안드로이드] 현재 액티비티, 다른 액티비티 종료하기 (15) | 2011.06.27 |
안드로이드] 안드로이드 액티비티의 라이프 사이클 (0) | 2011.06.02 |
안드로이드] return 의 기능 (0) | 2011.05.24 |
안드로이드] SDCard에 이미지 저장 후에 사진앨범 갱신이 안될 때 (0) | 2011.05.11 |