FragmentTabHost をホストする FragmentActivity があります。目標は、最初のタブにスワイプ可能なコンテンツを表示することです。
したがって、最初のタブは FragmentPagerAdapter と ViewPager をホストします。アプリは正常にコンパイルされますが、最初のタブには何も表示されず、スワイプできません。
私はまだアンドロイドに不慣れで、行き詰まっています。誰かが私を助けてくれることを願っています。これが私の関連コードです:
主な活動:
public class MainActivity extends FragmentActivity implements OnTabChangeListener
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initTabs();
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
private void initTabs()
{
FragmentTabHost tabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);
tabHost.setup(this, getSupportFragmentManager(),R.id.realtabcontent);
tabHost.addTab(tabHost.newTabSpec("Übersicht").setIndicator("Übersicht"), OverviewFragment.class, null); // <- shall contain swipeable content
tabHost.addTab(tabHost.newTabSpec("Einstellungen").setIndicator("Einstellungen"), SettingsFragment.class, null); // <- 'static' content
tabHost.setOnTabChangedListener(this);
}
...
}
OverviewFragment (スワイプ可能なコンテンツをホストします):
public class OverviewFragment extends Fragment
{
ViewPager _pagerView;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
_pagerView = (ViewPager)inflater.inflate(R.layout.tab_overview, container, false).findViewById(R.id.viewpager);
initPager();
return inflater.inflate(R.layout.tab_overview, container, false);
}
private void initPager()
{
FragmentManager fm = getChildFragmentManager();
PageAdapter pageAdapter = new PageAdapter(fm);
_pagerView.setAdapter(pageAdapter);
}
}
ページアダプター:
public class PageAdapter extends FragmentPagerAdapter
{
public PageAdapter(FragmentManager fm)
{
super(fm);
}
@Override
public Fragment getItem(int arg0)
{
MemoryFragment m1 = new MemoryFragment();
return m1;
}
@Override
public int getCount()
{
return 5;
}
}
MemmoryFragment (FragmentPagerController でページとして表示されるフラグメント):
public class MemoryFragment extends Fragment
{
@Override
public void onCreate(Bundle savedInstanceState) {
}
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View v = inflater.inflate(R.layout.memmory, container,false);
TextView tv = (TextView ) v.findViewById(R.id.textViewTest);
tv.setText("You are viewing the page Swipe Horizontally left / right");
return v;
}
}
このコードが意味をなさないことはわかっています。最初に同じテキストを含む 5 つのスワイプ可能なページが表示されるはずです。