하나의 액티비티와 여러 조각으로 안드로이드 애플리케이션을 개발 중입니다. 내 앱에 탐색 창이 포함되어 있습니다. 레이아웃에 listview가 있습니다. 아이템을 클릭하면 조각이 동적으로 변경되어 ft.replace(R.id.my_placehodler, new MyFragment())
이되고 backstack ft.addToBackstack(null)
에 트랜잭션이 추가됩니다. 매번 새 트랜잭션을 만들 때 새로운 조각을 인스턴스화합니다. 그것은 나에게 좋은 접근 방법이 아닌 것처럼 보인다. 프래그먼트 트랜잭션을 생성하는 올바른 방법에 대한 제안을 해주시겠습니까?올바른 방법으로 조각을 만들 수 있습니다.
답변
그냥 setFragment(FragmentClassObject,false,"fragment");
메서드를 호출하십시오. 당신이 조각 같은 클래스의 여러 인스턴스를 instanciating 피한다면
public void setFragment(Fragment fragment, boolean backStack, String tag) {
manager = getSupportFragmentManager();
fragmentTransaction = manager.beginTransaction();
if (backStack) {
fragmentTransaction.addToBackStack(tag);
}
fragmentTransaction.replace(R.id.content_frame, fragment, tag);
fragmentTransaction.commit();
}
, 즉 당신이, 당신이 태그를 사용하여 각 조각을 인식 할 수있는 조각의 클래스 당 하나의 인스턴스를 갖고 싶어합니다.
@Override
public void onNavigationDrawerItemSelected(int position) {
String tag = "";
switch (position) {
case 0:
tag = "fragment_0";
break;
case 1:
tag = "fragment_1";
break;
case 2:
tag = "fragment_2";
break;
}
FragmentManager fragmentManager = getFragmentManager();
Fragment fragment = fragmentManager.findFragmentByTag(tag);
if (fragment == null) {
// Only in case there is no already instaciated one,
// a new instance will be instanciated.
switch (position) {
case 0:
fragment = new Fragment_class_0();
break;
case 1:
fragment = new Fragment_class_1();
break;
case 2:
fragment = new Fragment_class_2();
break;
}
}
fragmentManager.beginTransaction().replace(R.id.container, fragment, tag).commit();
}
당신의 답장에서 이미 조각화 태그를 설정해야만 조각 관리자로부터 가져올 수 있습니다. 내가 맞습니까? – user3816018
설정하는 것만이 아닙니다. 먼저 동일한 클래스 (예 : Fragment_Class_1의 경우 'fragment_0', Fragment_Class_2의 경우 'fragment_1')에 대한 태그를 설정합니다. 둘째, 이미 인스턴스화 된 조각 객체가있는 경우이를 찾습니다 (findFragmentByTag). 이미 인스턴스화 된 객체가 없으면 클래스의 새 객체가 인스턴스화됩니다. – hata
- 1. 올바른 방법으로 MFMailComposeViewController를 닫을 수 있습니다.
- 2. 효과적인 방법으로 문자열을 만들 수 있습니다.
- 3. 올바른 방법으로 UIManagedDocument를 제거합니다.
- 4. 더 많은 FP 올바른 방법으로 업데이트 SQL 쿼리를 만들 수
- 5. 이 올바른 방법으로 자바 파일을 만들 수 있습니까 (프로그래밍 방식)?
- 6. 올바른 방법으로 단편화하십시오.
- 7. 올바른 방법으로 파이썬에서 환경과 같은 쉘을 만들 수 있습니까?
- 8. 올바른 방법으로 연관을 정의하여 연관성을 통해 데이터를 변경할 수 있습니다.
- 9. 조각을 닫는 올바른 방법
- 10. Java 관용적 인 방법으로 일반 배열을 만들 수 있습니다.
- 11. 가장 쉬운 방법으로 사용자 정의 Linux 배포판을 만들 수 있습니다.
- 12. 하나의 방법으로 여러 개의 이미지를 만들 수 있습니다.
- 13. 효율적인 방법으로 외부 데이터 구조체 업데이터 UI를 만들 수 있습니다.
- 14. 간편한 방법으로 여러 개의 패널을 컨트롤로 만들 수 있습니다.
- 15. 올바른 방법으로 배경 채우기
- 16. 올바른 방법으로 수표를 씁니까?
- 17. 올바른 방법으로 모듈로 결과를 찾을 수
- 18. 올바른 방법으로 DTO를 생성하십시오.
- 19. 조각을 어떻게 다시 만들 수 있습니까?
- 20. 올바른 방법으로 데이터 분리
- 21. 프로젝트 관련 코드 조각을 만들 수 있습니까?
- 22. 올바른 방법으로 HTML 추출하기
- 23. 올바른 방법으로 config.php를 생성하십시오
- 24. 올바른 방법으로 XSS 예방
- 25. codeigniter가 $ baseurl을 올바른 방법으로 추측합니다.
- 26. 올바른 방법으로 요소를 늘릴 수 있습니까?
- 27. 올바른 방법으로 테이블을 합치십시오.
- 28. 올바른 방법으로 나타낼 수 없습니다. PHP
- 29. Tomcat : 올바른 방법으로 리소스를 찾을 수 있습니까?
- 30. MongoDB 올바른 방법으로 자동 증가
조각 사이를 전환하기 위해 FragmentManager를 보았습니까? – epsilondelta
아니요. fragmentmanager에서 조각의 개수를 추적해야한다는 의미입니까? – user3816018