일단 여러분 댓글보고 어느정도 이해가 되었습니다.
제 질문이 잘못되었던거 같습니다...;;;
제가 원한건....
A액티비티에 있는 변수 int a 를 B액티비티에 보내고 싶은겁니다.
a에 들어간 숫자는 스테이지 넘버입니다. 즉 유저가 스테이지1이 하고싶어 하고 클릭하면 a에 1값이 들어가서 B액티비티에 들어가구요.
putExtra 를 사용하면... 키,값이 보내집니다. 그 값부분이 일반 default value 가 아니라 일반 변수인줄 알았어요.
그래서 종합해보면
putExtra 에서 ("stage",1) 을 보내면 B액티비티에서 getIntExtra("stage",1) 로 받아야겠찌요~
근데 저는 저 숫자 1이 아니라... 변수를 보내고 싶은거였거든요.
벨류값이 아니구...
그래서 지금 생각난 방법은 A액티비티에서
int a; 를 잡아주고 a에 유저가 누른 스테이지의 넘버를 집어넣어서 putExtra("stage",a)로 보내서
B액티비티에서 getIntExtra("stage",a) 로 받아보면 어떨까 생각중입니다. (알바중이라 확인이 안되네요)
하여간 질문도 힘들고, 이해도 힘들고, 답해주시는분들도 고생많으시고... ㅠㅠ 안드로이드 정말 싫어요 ㅠㅠ
집에가서 확인해보고 안되면 또 찾아봐야겠네요. 답글들 감사합니다 꾸벅 (__)
getIntExtra("stage",1)
에서 1은 getIntExtra에 stage 값이 없을 때 넣어주는 숫자입니다. 앞에서 뭔 숫자가 오던 간에 알 필요도 없어요.
올바로 넣었다면 뒤에 뭔 숫자를 넣어도 상관이 없다 이말입니다. stage 태그가 없을때 임의로 넣는 값이니까요.
로넷님 ㄷㄷㄷ 너무 공격적이여요 ㄷㄷ
그리고 get int extra 에서 뒤에 1은 디폴트 값이니 참고하셔요 ㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷ
이건머 볼레로님이 정말로 고맙게도 잘 적어주셨는데도 저렇게 반응하시니 답할길이 없습니다^_^;;
(이런 부분은 책에 기본적으로 나와있는 내용이니 로넷님이 더 공부를 하셔야되는게 맞습니다~)
이해가 안되시나요? 만약 A에서 putExtra("stage",a) 하고 B에서 b = getIntExtra("stage",1) ; 하면 B에 b값은 A에 a가 됩니다.
하지만 A에서 putExtra 없이 b = getIntExtra("stage",1); 하면 b에 1이 들어간다구요.
디폴트 값이라는걸 이해를 못하셔서 그런 거라 생각하고 자세히 풀어드렸습니다. 뭐라고 답변을 받건 간에 답변자에게 저런 태도를 보이시면 안되죠. 급한건 답변자가 아닙니다. 질문자죠.
인성이라..
저런 말까지 나오는데도 여러분들은 참 친절하시네요,,ㅋ
멀쩡히 문서가 있는데도 '영어로 되어있는 건 난 모르니까 설명해주셈' 이런 모습 딱히 보기 좋지 않습니다.
영어로 되어있든 뭐로 되어있든, 일단 있는 문서는 스스로 익히시려는 모습이 일반적으로 개발 공부하는 사람의 모습이기때문에, 그런 모습이 보이지 않아 저런 말이 나온 것일겁니다.
원래 개발은 구글로 하는겁니다.
그리고..댓글 보시고 펍에 글올리기 두렵다고 하셨는데..
답변에 인성 운운까지 나오는데 댓글 다는 사람은 또 얼마나 두려워해야할까요?
딱봐도 상대방 기분나쁘게 하려는 의도가 보이지 않나요... 다른댓글도 살짝살짝 비꼬는듯 하더군요.
멀쩡히 문서가 있다고 하셨는데, 그렇게 따지면 한국에 번역된 책 필요없고, 구지 번역할필요가 없잖아요.
그리고 여기 질문게시판도 필요없구요. 좀 보면 알잖냐~ 라는건 아시는분들이 말씀하실수 있다고 봐요.
전혀 노력도 안하고 질문만 틱틱 올리는 그런사람도 분명 문제지만요. 제가 이해를 못한것도 있구요.
그래도 인터넷 안에서 언어라는게... 어떻게 말하느냐에 따라서 상대방에게 안좋은 감정을 줄수 있다고 봅니다.
제가 문제다 라고 하는 댓글만 보이네요. 쩝;;;
우선 앞의 질문이 여기 질문이나
기본적이 이해를 못하고 질문하고 있습니다.
자기가 기본적인 것을 이해를 못했으면 다시 공부를 하시는 것이 예의고 기본이지
앞의 그에 대한 댓글이나 여기 댓글이나 기본이 안되어 있는듯합니다.
님 댓글은 노력안하고 질문만 틱틱 올리지 않은다고 했지만,
솔직히 그렇게 보입니다.
영어못할 수 있습니다. 저도 영어잘하지는 않으니까요. 그러나 노력은 필요하지요.
여기서 댓글 가지고 시비걸 노력이 아닌 문서도 좀 보고 이해하려는 노력이 필요합니다.
알바중에 이라 확인이 안되나 ---> 이거만 가지고는
님이 다른 알바를 하는지 혹은 APP 알바를 하는지 알수 없지만
두경우다 알바 맡긴 곳이 불쌍하기는 마찬가지 입니다.
다른 알바를 하는 경우, 알바는 안하고 딴짓하고 있어서 맡긴곳이 불쌍하고,
APP 알바를 인 경우는 이런 기본적이 자세도 안된 사람한테 맡겨서 불쌍하구요.
전 비꼬지는 않습니다. 이렇게 직접적으로 말씀드리지요.
수고하세요!
기본적인 이해가 안되니까 자꾸 질문을 하게 되는거죠. 이해가 됐으면 머하러 질문을 합니까?
거기다 공부를 다시 하는게 기본이라구요? 이해가 안가고 있는데 뭘 어디서 다시 찾나요? 그렇게 답이 잘 나올거였으면
여기에 글도 안올렸죠.
질문게시판 머하러 씁니까? 자기가 알아서 하면되는데, 영어 문서에 다 있는데 뭐하러 책사서 공부합니까? 보면 되는거지.
문서보고 이해하려고 해도 안되니까 글을 올리는거고, 독학으로 하고있기 때문에 질문을 올리는겁니다.
다른알바면 일안하고 딴짓해서 불쌍하다구요? 그럼 님은 업무시간에 절대 쉬지도 않고 일만 하나보군요.
사람들한테 대답할때 기본적인 예의라는걸 지키고 말하는 법부터 배우시지요. 쓸데없이 누가 불쌍하니 운운하지말고
그쪽이야말로 같이 일하는사람이 불쌍하네요. 말투가 저러니 원...
질문자는 본인이 답답해서 글을 올리는 겁니다.
여기에 지식 나눔 차원에서 좀 더 아시는 분들이 답을 올려주는거구요. 상당히 고마워해야하는 겁니다.
그런데 답변을 다는 사람들이 질문자와 일대일로 눈높이 교육까지 시킬수는 없습니다.
여긴 돈내고 배우는 1:1 교습 학원이 아닙니다.
남들이 고맙게도 답변을 올려주면 그 내용이 바로 이해가 안가더라도 이해를 위해 본인이 다시 노력을 해서 자기화해야하는 겁니다.
그런데 님은 본인의 논리력을 탓하기보단 왜 내가 바로 이해 안되도록 만드느냐? 는 식으로 글을 올리네요.
님의 질문 내용과 이해해나가는 과정을 보니 프로그래밍 능력의 문제가 아니라 논리력에 문제가 많습니다.
지금이라도 딴 길 알아보세요.
괜히 취직이라도 해서 다른 프로그래머한테 민폐끼치지 말고
자~ 쉽게 알려주께요
이글 첫번째 나오죠..
=====================
좀 더 공부좀 하셔야 겠네요.
음 알바라.... 알바 맡긴곳은 더 답답하겠군요.
putExtra("stage",a)
getIntExtra("stage",1)
이런식으로 쓰시면 됩니다.
--------------------
getIntExtra("stage",1) 로 받는게 아니라구요. 1,2,3중 무슨숫자인지 모른다구요. 에휴... 갑갑하네.
변수를 변수로 받는다구요. 그리고 알바 맡긴곳? 저는 전혀 다른일로 알바하고 있습니다.
볼레로님은 인성교육을 하셔야겠군요.
====================
이전 글을 통해서도 충분히 답변자들은 답을 알려줬죠.
getIntExtra() 에 선언된 int값 상수값은 default value다라고...
혹시 null 값이라도 나오면 프로그램 종료되어버리니 만약을 위해서라고...
초등학생에게 알려줘도 알만큼 알려준거 같은데 아직도 이해를 못하고 다시 질문 글이라고 올리니 공부 좀 더하라고 한거겠지요.
기본적인 null값 개념도 모르는거 같아서...
정답을 알려준건데 이거 말고 딴거 내놓으라고 하니 님의 이해력에는 상당한 문제가 있는겁니다.
요즘 프로그램이라는게 보통 협업을 하지요.
그런데 가끔 님같은 분들이 동료중에 있는 경우가 있지요.
차라리 없는게 훨 도움되는 사람...
괜히 소스 건드려서 오류만 만들고 프로그램 이상하게 만드는 사람...
본인의 능력 탓보단 환경탓하는 사람...
네 확실히 이해가 안된 상태이긴 합니다. 저도 인정합니다. 공부좀 더해야겠다? 이말도 맞습니다. 단지...
알바 맡긴곳은 더 답답하겠군요. 이런말 들으면 기분 참 좋으시겠네요. 구지 저런말을 써야할 이유가 있나요?
그리고 저 밑에 답변 이전을 보시죠. 제가 이 글로 또 질문을 한겁니까? 저는 집에가서 다시 해보려고만 했습니다.
이해를 잘 못했다 싶어도 그냥 두면되죠. 본 글이 질문글이 아닙니다. 그리고 제가 알고자 했던부분과, 알고있던 부분과, 다른분들이 설명해준 부분이 확실히 다른부분이었습니다. 이런 글만으로 100퍼센트 이해시키는건 무리죠.
저도 그래서 집에가서 해보려고 한겁니다. 지금 답이 안나오니까.., 해보면 이해가 가겠지 싶죠.
근데 구지 저런식으로 비꼰게 문제라는겁니다.
차라리 없는게 훨 도움이 되는사람, 괜히 소스 건드려서 오류만드는사람, 환경탓하는사람? ㅋㅋ
제가 그런사람이라고 확신하시는거 같네요. 글 몇개 쓴거로 이만큼 파악하시는걸 보면 님 참 대단하신분 같네요.
말이라는게 어떻게 하느냐에 따라서 상대방 기분을 좌지우지 하는겁니다. 그냥 저를 까려고 달려드는분들이 많네요.
열심히 까보세요. 이렇게 스트레스 푸는분들이라고 생각하고 넘어가겠습니다.
WOW-!
디씨인사이드나 특정 게임 서버 게시판에서나 볼 수 있을 법한 광경이 여기서도 펼쳐지는군요. 재밌어요 재밌어.
Intent가 무엇인가요? Intent는 왜 쓰나요? 중고등학교때 외운 사전적인 의미에서는 "의도"라는 뜻인데 왜 Android 개발진들은 함수명을 intent라고 정의하였을까요? 그런데 대체 Intent는 무엇을 위해 쓰라고 만들어진 걸까요? 이미 이전 게시물에 정답까지 달려있는데 또 다시 정리글을 쓰신 이유는 무엇인가요? 단순하네요. 그 정답을 catch하지 못하셨네요. 왜? catch는 try를 해야 할 수 있는거지요.
try{
read(article);
}catch(UnableToUnderstandException e){
e.printreply("article이 이해가 안가요!");
}
이해가시죠? 답글을 읽지 않으셨기에 해괴한 논리가 재탄생되고 또 다른 의문을 번복해서 낳게되는 겁니다. 눈으로 훑으신 거 아닌가요?
어쨋든 이해를 돕기 위해 Activity를 사람이라고 형상화하고 Intent는 사람의 의도라 생각하고 예시를 곁들이니 도움이 되시길 바랍니다.. 양념으로 수도코드를 더합니다.
0. 철수.activity(이하 (철수))와 영희.activity(이하 (영희))가 있습니다.
1. (철수)와 (영희)는 말을 하지 못하는 언어 장애인입니다. 둘은 의사 소통을 위해 수화를 이용합니다.
2. (철수)와 (영희)는 따사로운 주말에 공원을 거닐며 데이트를 하고 있습니다.
[ 액티비티 on : Each Activity is working on Park ]
3. (영희)는 갑자기 갈증을 느껴 콜라가 먹고픈 생각이 듭니다.
[ 의도발생 : intent young_intent = new Intent(영희, 철수) ... 영희.activity ]
4. (영희)는 수화를 통해 (철수)에게 콜라가 먹고 싶다는 의도를 전달합니다.
[ 의도송신_명확화 : young_intent.putIntent("영희원츄", 콜라) ... 영희.activity ]
[ 의도송신_시작 : startActivity(young_intent) ... 영희.activity ]
5-1. (철수)는 (영희)의 의도를 명확히 알아듣고 콜라를 사다줍니다
[ 의도수신 : Drink what = getIntent("영희원츄", 쥬스) ... 철수.activity ]
[ 액션시작 : goMarketToBuy(what) -> 콜라 -> ♡~... 철수.activity ]
5-2 (철수)는 (영희)가 수화를 보내는 동안, 안타깝게도 멀찌감치서 지나가는 아리따운 여인의 자태에 홀려있었습니다. 그러나 사랑스런 여친에게 갈굼당하기 싫어 알아들은 척을 합니다. 평소에 (영희)가 쥬스를 좋아한다는 사실을 깨우친 (철수)는 슈퍼로 향합니다.
[ 의도수신 : Drink what = getIntent("영희원츄", 쥬스) ... 철수.activity ]
[ 액션시작 : goMarketToBuy(what) -> 쥬스 -> OTL ... 철수.activity ]
위 예시가 로넷님께 도움이 되길 바라는데 부족할 수도 있겠다는 생각이 마구마구 피어납니다. 이미 많은 답변자분들은 putIntent("인텐트 정보", priceless_info)하셔서 마구마구 퍼날라주셨는데, 로넷님은 getIntent("인텐트 짜증나용~", null)하시고 있으니 참으로 안타까울 따름입니다.
- 개발 입문서를 보실때 페이지만 넘기지 마시고 읽어보시길 권합니다.
- 영어 문서를 드래그하지 마시고 읽어보시길 권합니다.
- 답글에 덧글을 달기보다는 읽어보시길 권합니다.
- 다 읽으셨으면 이클립스 키고 실행해보시길 권합니다.
초반 개발할때는 물론 어려움이 많습니다..짜증이 나는건 다반사구요~
도움을 주시려는 것이신데... 너무 따지는듯한 반응만 보이시니 ~~ 참 안타깝네요...
글쓴이 님의 글은 조금 읽이 불편한건 사실이예요...
다들 민감해 지신것 같은데... 릴렉스 하자구요~
================================================================================
해당 질문의 메서드 정의 내용입니다.
getIntExtra(String name, int defaultValue)
int 아닌 값을 넣으면 에러가 발생할것 입니다.즉 실행 자체가 불가능하죠~
Intent 에서 보낼수 있는 것은 Object 형식(String ,Integer, Long, ArrayList 등등)만 가능 합니다.
Intent 에서 변수 절대 불가능합니다.
Extra에 대해서 구체적으로 설명하자면
putExtra로 전송된 Interger, String, Parcel(직렬화된 Object정보)등 모든 정보는
getExtra를 통해서 받을 수 있습니다.
제가 int a = 0;
putExtra("a", a); 의 방식으로 전송했다면
받는측에서는
int a = getIntExtra("a", 0); // int형 자료를 던졌기때문에 int로 받아줍니다.
으로 받습니다.
이때 개발자가 새로운 클래스를 정의하게되고
이번엔 putExtra메서드 없이 startActivity로 호출하게된다면
int a변수에는 getIntExtra의 2번째 인자인 defaultValue가 들어가게 되는것이죠
예를들자면 현 상황에서 스테이지 넘버를 전송해주신다 하셨는데
putExtra("stage_no", stage);
로 전송을 하셨다면
받는 쪽에서는
int stage = getIntExtra("stage_no", -1);를 통해서 받으시면 됩니다.
그러면 stage라는 변수에 잘 전송이됩니다.
혹시 이부분에대해서 좀더 공부를 하고싶으시다면 Java의 Serialize(직렬화)와 예외처리개념을 보시면 쉽게 이해가 가실껍니다:)
일단 로넷님의 질문을 이해해 보자면 말이죠...
변수를 보내서 공유하고 싶어하는 것도 무리는 아닙니다. 고심해서(?) 이름 붙인 변수를 이왕이면 재사용하고 싶죠.
뭐 변수의 자체를 보내서 그것으로 다음에는 다시 주고 받을 필요없이 계~속 쓰면 얼마나 좋겠어요?
다만 변수는 어떤 "동네"에서 물건을 지칭하는 "이름"에 불과하기에 사용할 수 있는 "영역" 혹은 "lifetime(수명)"이 있는지라
그 동네 밖에서는 사용 할 수가 없고, 동네가 없어지면 같이 없어집니다.
(예를들어 애플리케이션이 종료되면 없어지거나, activity가 종료되면 없어지거나.. A activity안에서만 쓸수 있거나.. 그런거죠.)
여기서 intent는 동네끼리 어떤 물건을 교환 할 수 있는 바구니라고 보면 됩니다.
그래서 activity가 죽기전에 바구니를 쓱 넘겨주고 죽으면 다른 activity에서 그 바구니를 전달 받죠....
putExtra는 바구니에 물건을 넣는 행위고요, getExtra는 그 바구니를 받은 후 물건을 가져가는 행위입니다.
intent를 통한 데이터 교환의 장점은..그 방법을 일반화 할 수 있다는 것이며(바구니만 있으면 되니깐.......)
서로 다른 애플리케이션간에도 프로토콜(intent 플래그 등등...)만 맞춰주면 같은 인터페이스로 데이터 교환을 할 수 있다는 것입니다.
하지만 단순히 애플리케이션 내의 변수 공유의 목적으로만 쓴다면.. 복잡하게 굳이 intent를 쓸 필요는 없습니다.
안드로이드스러운 방법에 대해 말씀드리자면..."Application 클래스" 혹은 "전역변수" 를 구글링 해보시고 스터디 하신 후
Application이라는 동네에서 사용할 수 있는 이름(변수)을 선언해서 값을 변경하고, 가져오고 하면 됩니다.
이 방법이 여러 activity에서 변수를 공유할 때는 더 좋다고 생각합니다.
그리고 미래의 개발자인 로넷님께 말씀드리자면... 개발자들은 참 프라이드도 많고 까칠하고 섬세하신 분들입니다. 소중히 다뤄주세요.




좀 더 공부좀 하셔야 겠네요.
음 알바라.... 알바 맡긴곳은 더 답답하겠군요.
putExtra("stage",a)
getIntExtra("stage",1)
이런식으로 쓰시면 됩니다.