1

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 つのスワイプ可能なページが表示されるはずです。

4

0 に答える 0