안드로이드 개발 질문/답변
(글 수 45,052)
총 액티비티 3개가 돌아가는 어플이 있습니다.
그중 2개는 새로모드 가로모드일때마다 바뀐는 것이구요~
2개액티비티에서 아이템을 선택하면 3번째 어플로 이동합니다.
문제는 처음 시작은 새로모드 액티비티로이동해서 가로 세로마다 액티비티가 변경이 됩니다.
새로모드와 가로모드에서 backkey를 클릭하면, 둘다 홈스크린으로 나가야하는데요~
지금은 가로에서 백하면 세로모드로와서 다시 백키를 누르면 홈 스크린으로 나갑니다.
대략 방법을 생각해 보았습니다.
방법1. 새로모드에서 가로 시작하면서 ,finish() 해줌니다.
대신나중에 새로 가면 기존의 액티비티 모습으로 돌아가야하니 모든 정보를 정리해서
가로 모드에게 보내주어야겠지요~ 다시 새로모드로 왔을때 열심히 기존 모습을 찾아야겠지요~
정보 저장이 쉽지 않습니다..너무 많은 정보들이라서요~
방법2. 가로모드에서 백키를 누르면 홈키누르듯이 바로 홈스크린으로 가는 인텐트를 날려주는 것이지요~
저는 2번째 방법을 사용하고 싶습니다.
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setComponent(new ComponentName("com.android.launcher", "Launcher"));
startActivity(intent);
이렇게 하니 현재 어플의 매니패스트에 정의 되어 있지 않다고 에러가 뜨더군요~
당연하여 다른 어플을 띄우는 것이니요~
어떻게 해야 홈 화면으로 갈수 있을까요~
참고로 KeyDown 으로 백키 누르면 KEYCODE_HOME 로 인식하도록 하면 되는줄 알았는데
장비에서의 홈키는 어플에서는 인식 못하게 되었더라구요~
전 애뮬이아니라 ~장비로 작업하고 있습니다..
도움줌 부탁 드려요 홈으로갈수 있는 방법이요~~
아니면 질문 내용중에 아시는것 아무것이 라도~~
수고하세요~
2009.12.17 12:59:10
원하시는 기능을 하는 것을 API Demos 어플에서 확인해 보실 수 있습니다.
API Demos App은 \android-sdk-windows\platforms\android-2.0.1\samples\ApiDemos 위치에 있습니다.
프로젝트를 인포트해서 실행해 보세요 (2.0.1 버전이네요)
실행해 보면 리스트로 여러개의 샘플들이 나오는데 다음 위치의 것을 실행해보세요
App->Activity->Forwarding
실행해 보면
첫번째 화면에서 [Go]버턴을 누르면 두번째 화면이 나옵니다.
이 두번째 화면에서 Back key을 누르면 첫번째 화면으로 가지 않고 바로 이전 List화면으로 이동됩니다.
동작시나리오는 다르지만 이전 화면으로 돌아 가지 않는 것에 참고를 해서
함 검토해 보시면 될 듯 합니다.
(코드를 직접 안내하지 못한점 이해해 주세요~)
2009.12.17 13:07:08
BIGo 님 답글 감사드려요~
위의 방법은 제가 말한 첫번째 방법이네요~
하지만 이건,,정보를 저장할것이 많아서 부담이 가는 것이고요~
전 2번재 방법으로 하고 싶은데 이건 가능하지 않을 것일까요??
위의 방법은 제가 말한 첫번째 방법이네요~
하지만 이건,,정보를 저장할것이 많아서 부담이 가는 것이고요~
전 2번재 방법으로 하고 싶은데 이건 가능하지 않을 것일까요??
2009.12.17 19:44:02
해결을 하였습니다.
새로모드 startActivityforResulte(intent,1);
가로모드 -> 새로방향 -> finish(); / 새로모드 정보 기존의 정보 모두 가지면서 resume () 됨
가로모드 ->back key -> setResult(100); finish(); / 새로모드 onActivityResult 에서 resultCode == 100 새로모드 finish()
의로의 곳에서 가능하네요~
아마도 onActivityResult 가 onResume ()하기 전에 실행되니 새로모드가 보이지 않으며서 finish()가 되네요~
다른 분들에게도 도움이 되셨으면 합니다.
ㅎㅎㅎ
새로모드 startActivityforResulte(intent,1);
가로모드 -> 새로방향 -> finish(); / 새로모드 정보 기존의 정보 모두 가지면서 resume () 됨
가로모드 ->back key -> setResult(100); finish(); / 새로모드 onActivityResult 에서 resultCode == 100 새로모드 finish()
의로의 곳에서 가능하네요~
아마도 onActivityResult 가 onResume ()하기 전에 실행되니 새로모드가 보이지 않으며서 finish()가 되네요~
다른 분들에게도 도움이 되셨으면 합니다.
ㅎㅎㅎ