0

나는 안드로이드에서 작업 중이다. 내 주요 활동에서 전체 화면을 다루는 하나의 큰 조각이 있습니다. 일반적으로 사용자가 사용하는 각 UI 화면마다 바꾸기 명령을 수행하고 각 화면의 조각을 바꿉니다.안드로이드 : 조각이나 활동 내의 tablayout/viewpager 파편

내 현재에는 세 가지 다른 조각으로 tablayout/viewpager 콤보를 넣고 싶은데 어떤 탭을 눌렀는지에 따라 새로운 조각이 나옵니다. 이 문제는 다른 조각 안에 세 개의 다른 조각을 보여주는 tablayout입니다. 이것은 심지어 가능하거나 권장합니까? 그리고 그것을 새로운 활동으로 바꿔야 만한다면. 내비게이션 서랍이 정상적으로 작동하고 활동을로드 할 때 닫히지 않습니까, 아니면 문제가있을 것입니다. 당신의 도움에 대한

덕분에

+0

나는 더 많은 프래그먼트가있는 ViewPager 프래그먼트로 프로젝트를 수행했습니다. 그것은 확실히 가능하지만 그보기를 통해 데이터를 전달하는 경우 코드 관리가 까다로울 수 있습니다. –

답변

2

당신은 같은에 대한 공식 문서 아래에서 확인하실 수 있습니다 또는 내 데모 조각 사용할 수 있습니다

public class MainFragment extends Fragment { 
private FragmentTabHost mTabHost; 

//Mandatory Constructor 
public MainFragment() { 
} 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

} 

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.fragment_tabs,container, false); 


    mTabHost = (FragmentTabHost)rootView.findViewById(android.R.id.tabhost); 
    mTabHost.setup(getActivity(), getChildFragmentManager(), R.id.realtabcontent); 

    mTabHost.addTab(mTabHost.newTabSpec("fragmentb").setIndicator("Fragment B"), 
      FragmentB.class, null); 
    mTabHost.addTab(mTabHost.newTabSpec("fragmentc").setIndicator("Fragment C"), 
      FragmentC.class, null); 
    mTabHost.addTab(mTabHost.newTabSpec("fragmentd").setIndicator("Fragment D"), 
      FragmentD.class, null); 


    return rootView; 
} 

}

: 기본 조각의 탭을 처리하기 위해이 작업을 수행 https://developer.android.com/reference/android/support/v4/app/FragmentTabHost.html

시도를 탭 레이아웃 :

<android.support.v4.app.FragmentTabHost 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@android:id/tabhost" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <FrameLayout 
     android:id="@+id/realtabcontent" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1"/> 

</LinearLayout> 

+1

굉장히 잘 했어. 감사합니다. –

0

예, viewPager와 TabLayout는 메모리에 다른 조각의 유지합니다.

귀하의 경우에는 메모리 성능에 영향을주지 않는 탭이 3 개만 있기 때문에 pagerAdapter를 사용할 수 있습니다.

하나의 조각을 다른 탭에 재사용 할 수 있지만 탭은 3 개이므로 성능에 영향을 미치지 않습니다.

예, 메인 조각 안에 tabLayout을 넣을 수 있습니다. 메인 조각은 바로 활동의 일부이며 다른 콜백을 제외하고는 호스팅 활동과 동일한 라이프 사이클을 따릅니다.

+0

응답 해 주셔서 감사합니다.하지만 그건 내 질문이 아닙니다. 메인 조각 안에 tablayout 조각이 있는지 여부를 묻습니다. –

+0

네, 왜 아닙니다, 당신은 주요 부분에서 그것을 가질 수 있습니다. – Ritesh