2010-08-02 1 views
0

이 질문에는 실제로 두 부분이 있습니다.TabActivity를 사용하는 응용 프로그램 워크 플로 수정

첫 번째 부분 : 지금 몇 주에 대한 내 첫 번째 응용 프로그램을 개발했습니다

. 나는 5 개의 스크린을 가지고 있고 모든 것이 잘 보인다. 그러나 TabView 응용 프로그램의 탐색 변경하는 것이 좋습니다.

나는 그것에 대해 많은 것을 파고 들지 않았지만, 누군가 나를 조금 구할 수 있기를 바라고 있습니다. 사람들은 일반적으로 각 탭 안에 활동을 배치하지 않는 것 같습니다. 탭 콘텐트를보기로 지정하기 만하면됩니다. 이것은 나의 주요한 좌절이있는 곳이다. 1) 이미 코드로 가득 찬 Activity 클래스가 있고 2) TabView를 사용하여 앱의 구조가 어떻게 보이는지 빠르게 추측 할 수 없습니다. 예를 들어 뷰의 버튼을 클릭하는 핸들러 코드는 어디에 두어야하나요? 이 모든 것이 단지 TabView 액티비티에 어떻게 든 버려 집니까?

내가 원했던 것은 내가하고있는 것에 대한 빠른 개요와 내가 가질 수 있다고 생각되는 질문에 대한 답변을 제공하고 TabView 응용 프로그램을 만드는 데 필요한 몇 가지 리소스를 알려주는 것입니다. 빠른 Google 검색은 실제로 TabView 활동을 작성하고 몇 개의 탭을 추가하는 방법을 보여줍니다. 코드가 더 깊어지지 않습니다. 예를 들어 내 탭의 콘텐츠 창 중 하나에 표시 할 레이아웃 xml이 있는데, 해당 레이아웃에있는 버튼을 클릭하면 코드가 어디에 있습니까?

두 번째 부분 :

는 내가 현재에이 활동을 마무리하는 TabActivity을 추가 한 순간에 나는 결국 내가이 작업을 수행하고 싶습니다하지만 (내 탭의 내용을 채우는 활동이있다. 가장 효율적인 패션, 활동을 탭 컨텐츠로 보이지 않는 것). 나는 다소 짜증나는 것을 알아 차렸다. 내 MAIN 활동은 내 사용자가 자신의 계정에 로그인하기 위해 작성한 활동입니다. 로그인하면 내 탭 활동으로 이동합니다. 어떤 일이 발생합니까 :

내가 Tab 활동을하고 있는데 홈 버튼을 클릭하여 응용 프로그램을 "최소화"한 다음 다시 실행하면 탭 활동으로 돌아 가지 않습니다. 나는 활동 내 기록으로 돌아 간다. 왜? 내 Tab 활동의 launchMode를 singleInstance ...로 설정하지 않았거나 기본적으로 singleInstance입니까? 앱을 다시 실행하여 앱을 다시 실행하도록 설정할 수 있습니다 (이상한 일을하고 있다고 가정하고 어딘가에서 데이터를 저장하지 않고 읽고 읽는 방법을 프로그래밍 방식으로 지정하지 않아도 됨).

모든 시간 내 주셔서 감사하고

+0

로그인 활동의 launchMode가 무엇입니까? 이것이 작동하려면'singleTask'가되어서는 안됩니다. Activity의 onCreate와 onDestroy 메소드 모두에 logcat 출력을 넣으면, 시작 -> 로그인 -> 다시 시작 -> 다시 시작할 때의 이벤트 순서는 무엇입니까? –

+0

로그인 활동에 launchMode가 설정되어 있지 않으므로 현재는 "표준"입니다. 그러나 noHistory를 true로 설정했습니다. – Andrew

+0

noHistory를 제거하면 내 문제가 해결 된 것 같습니다. – Andrew

답변

0

내가 TabActivity에서 하위 활동의 ​​사용을 피하는 타당성에 대한 코멘트를하지 않아도 도움이됩니다. 핸들러의 경우, 액티비티 대신에 뷰를 임베드하지 않으면 레이아웃 XML의 모든 android:onclick 유형 핸들러 설정이 TabActivity의 메소드를 호출합니다. 이는 일반적으로 가장 가까운 액티비티 Activity 인 뷰 'Context의 메소드로 이동하기 때문입니다. 액티비티를 사용하지 않고 코드를 더 분할하려면, 설정 한 후에 탭 컨텐트 뷰에서 findViewById 호출을 사용해야하고 코드에서 수동으로 핸들러를 바인딩해야한다고 생각합니다.

+0

그건 내 최고의 추측이었고, 괜찮은 예제를 찾을 수 없었습니다. 네가 나를 연결시켜 줄 수있는 건 알아? 그리고 본질적으로 하나의 huuuuge TabActivity 파일을보고 있습니까? 내가 끝내면 10 대 정도의 화면을 가질 계획입니다. 도움을 주셔서 감사합니다 – Andrew

+0

불행히도 좋은 예제를 모르겠습니다. 하위 액티비티를 사용하지 말아야한다면, 어쨌든 각 탭에 대한 로직을 보유 할 별도의 클래스를 설정하는 것이 좋습니다. TabActivity의 onCreate에 탭의 최상위 뷰를 전달하여 각각을 구성하고 거기에 필요한 모든 이벤트에 바인드하도록합니다. –

+0

하위 액티비티를 사용하지 않아도되지만 * TabActivity를 구현하는 데 가장 효율적인 방법이라면 그 일을하고 싶습니다. 그것은 약간의 우려를 가져온다. 예를 들어보기 A에보기 B를 실행하는 버튼이 있다고 가정 해보십시오. 같은 탭 안에보기 B를 표시 할 수 있습니까? View A가 결국 화면을 다시 채울 때 모든 데이터를 다시로드 할 필요가 없습니까? 몇 군데에서는 startActivityForResult도 사용합니다. 활동을 사용하지 않고서는, 이것은 어려운 지점에 나를 둔다, 예? – Andrew