2013-08-09 4 views
12

내 응용 프로그램에는 탭바 기능이 있습니다. 한 탭에서 lisview에 서버 데이터를 표시하고 해당 목록 항목에 대한 세부 정보 페이지를 클릭하면 새 조각이 열립니다.android에서 프래그먼트에서 뒤로 버튼을 눌렀을 때 onCreateView를 호출하지 못하게하는 방법

그러나 세부 정보 페이지에서 뒤로 버튼을 누르면 oncreateview가 이전 페이지를 호출 할 때마다 listview가 생성되고 new가 새로운 서버 데이터를 가져옵니다. 그럼 어떻게 막고 이전 버튼을 누를 때 이전 상태를 표시할까요?

답변

5

나는 onCreateView를 호출하는 것이 좋은 생각이 아니라고 생각합니다. 함수가 호출되지 않았다면, 예외가 생길 것입니다. 그래서 안됩니다. 그 대신에, "listview created and new fetches new server data"를 명시 적으로 호출 할 수있는 다른 장소 (원하는 곳, 원하는 곳, onCreate())로 옮기고, onCreateView(). 희망이 도움이됩니다.

-1

서버에서 데이터를 가져오고 다시 전화를 걸지 않으려는 경우 분기를 사용하여 해당 코드를 분기하는 경우 해당 참조가 업데이트되어야 할 때보기 변수와 별도로 데이터 객체를 캐시해야합니다.

모든 초기화 및 서버 호출을 수행하고 init()을 호출하지 않을 때마다 init() 메소드 호출을 논리적으로 분기하는 init() 메소드를 생성하십시오.

31

나는이 답변을하기에는 너무 길다는 것을 알고 있지만, 내가 추측하고 싶은 것은 조각을 다른 것으로 대체한다는 것입니다. 나는 당신이 당신의 onItemClick 그렇게 간단한 솔루션에 사용하고있다 다른 단편으로 이동

ft.replace(R.id.realTabContent, fragment); 

를 사용하고 있다고하는 말은 대신 조각을 교체의

ft.add(R.id.realTabContent, fragment); 

를 사용합니다.

의 차이를 이해하고을 바꾸면을 대체하십시오. 이렇게하면 문제가 해결됩니다.

교체 : 당신이 돌아올 때 원래 조각을 대체하고 뷰를 다시 만들
추가 : 그냥 스택 할 수있는 새로운 조각을 추가합니다. 이 같은 문제에 직면하고 사람을 도움이 될 것입니다

희망 ...

+1

우리가 Add' 다음 새 단편이 정확하지 않은 예전 –

+0

겹쳐'설정 한 경우 : 워드 프로세서 * 추가 ​​말 * 것이다 이 조각을 컨테이너에 추가하고 백 스택에 추가하지 마십시오. https://developer.android.com/reference/android/app/FragmentTransaction.html#add(int,%20android.app.Fragment,%20java.lang.String) – liucheia