안드로이드 개발 질문/답변
(글 수 45,052)
여러 Activity로 화면구성을 하여 Intent호출하는 방식으로 어플을 만들고 있습니다.
속도관련, 통신관련 이슈로 인하여 하나의 Activity에서 돌아가도록 구조를 바꾸려고합니다.
어떤 방식으로 어떤 명령어를 사용해야 할지요...너무 고민중입니다.
구체적으로 알려주신다면 너무나도 감사하겠습니다.^^;;;;;;
(한달넘도록 헤매고 있습니다.ㅠ.ㅠ)
속도관련, 통신관련 이슈로 인하여 하나의 Activity에서 돌아가도록 구조를 바꾸려고합니다.
어떤 방식으로 어떤 명령어를 사용해야 할지요...너무 고민중입니다.
구체적으로 알려주신다면 너무나도 감사하겠습니다.^^;;;;;;
(한달넘도록 헤매고 있습니다.ㅠ.ㅠ)
2010.08.11 11:03:18
1. FrameLayout으로 모든 Content view를 만들어두고
ID 별로 visble을 바꾸는 방법
2. LayoutInflater로 layout 리소스를 읽어서
그때 그때 Content를 표시할 ViewGroup에 addView() 또는 removeView()
ID 별로 visble을 바꾸는 방법
2. LayoutInflater로 layout 리소스를 읽어서
그때 그때 Content를 표시할 ViewGroup에 addView() 또는 removeView()
2010.08.11 11:11:52
저도 탭을 추천드립니다. tabWidget의 Visibility만 GONE으로 주면
탭 버튼은 싹 사라질테니... 나머지 화면제어는 탭에 맡기고 setCurrentTab만 잘 주면 됩니다.
다만 문제는 Activity간의 Intent로 메시지를 주고 받게 되면 이게 골치아파지는데요.
이것도 해결방법은 있습니다. TabHost를 갖는 (Main이라고 할수 있겠죠...) Activity에
Intent를 주고 타겟이 되는 Activity에 이를 넘겨줘서 실행하는 방법도 있습니다.
"실행"은 반드시 LocalActivityManager를 이용해야 하구요...
탭 버튼은 싹 사라질테니... 나머지 화면제어는 탭에 맡기고 setCurrentTab만 잘 주면 됩니다.
다만 문제는 Activity간의 Intent로 메시지를 주고 받게 되면 이게 골치아파지는데요.
이것도 해결방법은 있습니다. TabHost를 갖는 (Main이라고 할수 있겠죠...) Activity에
Intent를 주고 타겟이 되는 Activity에 이를 넘겨줘서 실행하는 방법도 있습니다.
"실행"은 반드시 LocalActivityManager를 이용해야 하구요...
2010.08.11 12:02:10
setContentView 메소드를 사용하여 View를 바꿔치기 하시면 됩니다.
만약 기존에 layout이 main, read 이렇게 있었다면 한 Activity 내에서
setContentView(R.layout.main) 을 호출하면 메인 화면으로 바뀌고,
setContentView(R.layout.read) 을 호출하면 읽기 화면으로 바뀌게 됩니다.
안드로이드 그룹에서 읽은거 같은데 Activity를 띄우는 것보다 layout을 변경하는 것이 속도는 빠르다고 합니다.
그러나, 화면마다 메뉴나 다이얼로그 등이 다 달라서
저도 처음에 View를 바꾸는 방식으로 개발했다가 화면마다 Activity를 만드는 것으로 변경했습니다.
화면이 많아질 수록 소스코드가 복잡해지게 됩니다.
onCreateDialog 에서 모든 뷰에 대한 다이얼로그를 처리해야하고,
onOptionsItemSelected 에서 모든 메뉴에 대한 처리를 해야합니다.
비추입니다.
만약 기존에 layout이 main, read 이렇게 있었다면 한 Activity 내에서
setContentView(R.layout.main) 을 호출하면 메인 화면으로 바뀌고,
setContentView(R.layout.read) 을 호출하면 읽기 화면으로 바뀌게 됩니다.
안드로이드 그룹에서 읽은거 같은데 Activity를 띄우는 것보다 layout을 변경하는 것이 속도는 빠르다고 합니다.
그러나, 화면마다 메뉴나 다이얼로그 등이 다 달라서
저도 처음에 View를 바꾸는 방식으로 개발했다가 화면마다 Activity를 만드는 것으로 변경했습니다.
화면이 많아질 수록 소스코드가 복잡해지게 됩니다.
onCreateDialog 에서 모든 뷰에 대한 다이얼로그를 처리해야하고,
onOptionsItemSelected 에서 모든 메뉴에 대한 처리를 해야합니다.
비추입니다.
쓰신 내용이 약간 이해가 잘안가지만,
간단하게 하신다면 Tab을 이용한 방법을 추천드립니다.
Activity가마다 컨텐츠가 다르고 이러한 액티비티가 양이 많다고하면, task (Activity stack) 부분도 사용자가 쉽도록 해야하고 손볼게 많을거 같습니다. 심플하고 쉽게하신다면 Tab메뉴별도 각각의 Activity화면을 사용하면 될듯 합니다.