2017-01-30 7 views
0

viewPager를 사용하여 여러 조각을 반환하는 활동이있는 영어 교육용 앱을 만들고 있습니다. 앱에는 viewPager를 사용하여 동일한 조각 (일부 단어 변경 및 순서 변경 제외)을 반환하는 추가 활동을 사용하는 추가 단위가 있습니다. 파편을 재사용하는 가장 좋은 방법은 무엇입니까? 다른 활동에서 단편을 구현해야합니까? 그렇다면 동일한 조각이 이미 백 스택의 다른 활동에서 이미 사용 된 경우 조각이 새 활동에 구현되면 문제가 발생할 수 있습니까? 또는 조각이나 레이아웃 파일을 다시 사용할 수있는 또 다른 방법이 있습니까? 미리 감사드립니다.조각 또는 레이아웃 파일 재사용

+0

더 자세히 설명하십시오. 이걸 읽고 싶을 수도 있습니다. (http://stackoverflow.com/questions/7951730/viewpager-and-fragments-whats-the-right-way-to-store-fragments-state) 또한 2 인스턴스 프래그먼트는 백 스택에서 사용할 수 있습니다. 그들은 그 목적을 위해서만 만들어졌습니다. –

답변

0

재사용이 Fragment의 사용의 주요 장점 중 하나입니다, 그래서 당신은 확실히 시도하고 가능한 한 재사용한다. 안드로이드 문서에서 (https://developer.android.com/guide/components/fragments.html)

You can (...) reuse a fragment in multiple activities

Android를 다시 사용할 때마다 Fragment의 새로운 인스턴스가 만들어 지므로 기존 Fragment과 충돌 할 위험이 없습니다 (둘 사이에 공유되는 정적 변수를 사용하지 않는 한).

+0

고마워, 그게 내가 알고 싶었던 것이다. 나는 이제 내가 문제가 생기지 않는다는 것을 알면서 내 앱을 계속 만들 수있다. – Ntwofive

1

예. 조각과 활동을 여러 번 재사용 할 수 있습니다. 우선, 당신의 활동은 파편의 용기이어야하며, 당신의 활동에 많은 책임을 부여하지 않도록 노력하십시오. 하나의 BaseActivity를 만들고 한 레이아웃 (예 : 상대 레이아웃)을 단편 컨테이너로 넣은 다음 기본 클래스에서 구현하는 모든 활동에서 기본 대체 단편 메소드를 호출 할 수 있습니다. 여기

private void changeFragment(Fragment targetFragment){ 

    getSupportFragmentManager() 
     .beginTransaction() 
     .replace(R.id.main_fragment, targetFragment, "fragment") 
     .setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_FADE) 
     .commit(); 
} 

태그를 얻을 때 당신은 그래서 더이 부분 추상 메소드를하고. 것이 어떤 단편 인식 할 수있는 새로운 조각에 다음 모든 다른 조각에 대한 "조각 ' TAG을 변경해야합니다.

+0

감사합니다. 이 질문에 대한 답변도 있습니다. 나중에 참조 할 수 있도록 단편 교체 방법을 명심하십시오. 죄송합니다. 나는 두 가지 대답을 받아 들일 수 없습니다. – Ntwofive