FragmentTabHost
을 사용하는 활동이 있으므로 각 탭에 조각이 있습니다. 첫 번째 탭에서 두 개의 중첩 된 조각이 있는데 하나는 화면의 위쪽 절반에 있고 다른 하나는 아래쪽 절반에 있습니다. 하단의 단편은 ViewPager
을 사용하여 여러 개의 LinearLayouts
을 스캔합니다. 그것은 모두 잘 작동합니다.FragmentTabHost, 중첩 된 단편 및 ViewPager
다른 탭으로 이동하여 처음으로 돌아갈 때까지. 맨 아래의 중첩 된 조각은 더 이상 나타나지 않지만 위에있는 조각은 나타납니다.
다음public class MainActivity extends SherlockFragmentActivity
{
private FragmentTabHost mTabHost;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity_layout_vert);
mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);
mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);
mTabHost.addTab(mTabHost.newTabSpec("TAB1").setIndicator("", getResources().getDrawable(R.drawable.tab1_selector)), Tab1Fragment.class, null);
mTabHost.addTab(mTabHost.newTabSpec("TAB2").setIndicator("", getResources().getDrawable(R.drawable.tab2_selector)), Tab2Fragment.class, null);
}
}
내가 TAB1의 조각을 사용하고 있습니다 방법은 다음과 같습니다 :
이것은 내가 내 주요 활동을 사용하고 방법은 다음과 같습니다
은 여기 내 사용을 보여주는 몇 가지 코드의
public class Tab1Fragment extends SherlockFragment
{
private NestedFragment1 mNestedFrag1 = null;
private NestedFragment2 mNestedFrag2 = null;
@Override
public void onCreate(Bundle inSavedInstanceState)
{
super.onCreate(inSavedInstanceState);
mNestedFrag1 = new NestedFragment1();
mNestedFrag2 = new NestedFragment2();
FragmentManager fragManager = getChildFragmentManager();
FragmentTransaction fragTransaction = fragManager.beginTransaction();
fragTransaction.add(R.id.nested_frag1_container, mNestedFrag1, "Frag1");
fragTransaction.add(R.id.nested_frag2_container, mNestedFrag2, "Frag2");
fragTransaction.commit();
}
@Override
public void onDestroy()
{
FragmentManager fragManager = getChildFragmentManager();
FragmentTransaction fragTransaction = fragManager.beginTransaction();
fragTransaction.remove(mNestedFrag1);
fragTransaction.remove(mNestedFrag2);
fragTransaction.commit();
}
}
그리고 두 번째 중첩 된 조각 (사라지는 조각)을 사용하는 방법은 다음과 같습니다.
public class NestedFragment2 extends SherlockFragment
{
private MyPageAdapter mPageAdapter;
private ViewPager mViewPager;
@Override
public void onCreate(Bundle inSavedInstanceState)
{
super.onCreate(inSavedInstanceState);
mPageAdapter = new MyPageAdapter();
}
@Override
public void onDestroy()
{
super.onDestroy();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View toReturn = inflater.inflate(R.layout.nested_fragment1_layout_top, container, false);
mViewPager = (ViewPager)toReturn.findViewById(R.id.viewpager);
mViewPager.setAdapter(mPageAdapter);
mViewPager.setOffscreenPageLimit(5);
return toReturn;
}
private class MyPageAdapter extends PagerAdapter
{
@Override
public Object instantiateItem(ViewGroup container, int position)
{
View page = getActivity().getLayoutInflater().inflate(R.layout.view_pager_controls_layout, container, false);
container.addView(page);
return page;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object)
{
container.removeView((View)object);
}
@Override
public int getCount()
{
return 5;
}
@Override
public float getPageWidth(int position)
{
return 1;
}
@Override
public boolean isViewFromObject(View view, Object object)
{
return(view == object);
}
}
}
생각 하시겠습니까?
이미 5로 설정 중입니다. 오해 할 가능성이 있습니까? 뷰 페이지는 탭과 관련이 없습니다. 첫 번째 탭 안의 중첩 된 조각에 사용됩니다. – KairisCharm
2 중첩 된 조각을 구현하는 방법을 알아야합니다. – Dororo
내 게시물을 내 게시물을 참조하십시오. – KairisCharm