2

この関数を使用してタブを作成しました:

public class MyTaber extends SherlockFragmentActivity implements ActionBar.TabListener, ViewPager.OnPageChangeListener{

TabHost mTabHost;
private Tab1MyFirstTab frgTabMyFirstTab;
private Tab2Recipes frgTabRecipes;
private Tab3Products frgTabProducts;
private Tab4FAQ frgTabFAQ;
private Tab5Settings frgTabSettings;

private ViewPager mViewPager;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.myview);
    mViewPager = (ViewPager) findViewById(R.id.pager);
    mViewPager.setAdapter(new MainPagerAdapter(
            getSupportFragmentManager()));
    mViewPager.setOnPageChangeListener(this);
    mViewPager.setPageMarginDrawable(R.drawable.border);
    mViewPager.setPageMargin(16);
    final ActionBar actionBar = getSupportActionBar();
    getSupportActionBar().setDisplayShowHomeEnabled(false);
    getSupportActionBar().setDisplayShowTitleEnabled(false);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    actionBar.addTab(actionBar.newTab().setText(R.string.tab_myfirsttab_title)
            .setTabListener(this).setIcon(R.drawable.ic_tab1_inactive));
    actionBar.addTab(actionBar.newTab().setText(R.string.tab_recipes_title)
            .setTabListener(this).setIcon(R.drawable.ic_tab2_inactive));
    actionBar.addTab(actionBar.newTab().setText(R.string.tab_products_title)
            .setTabListener(this).setIcon(R.drawable.ic_tab3_inactive));
    actionBar.addTab(actionBar.newTab().setText(R.string.tab_faq_title)
            .setTabListener(this).setIcon(R.drawable.ic_tab4_inactive));
    actionBar.addTab(actionBar.newTab()
            .setText(R.string.tab_settings_title).setTabListener(this).setIcon(R.drawable.ic_tab5_inactive));
}

private class MainPagerAdapter extends FragmentPagerAdapter {
    public MainPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        switch (position) {
        case 0:
            return (frgTabMyFirstTab = new Tab1MyFirstTab());

        case 1:
            return (frgTabRecipes = new Tab2Recipes());

        case 2:
            return (frgTabProducts = new Tab3Products());

        case 3:
            return (frgTabFAQ = new Tab4FAQ());

        case 4:
            return (frgTabSettings = new Tab5Settings());

        }
        return null;
    }

各タブは、SherlockFragment を使用して同様の方法で作成されます。

public class Tab3Products extends SherlockFragment{

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    View view = inflater.inflate(R.layout.tab3products, container, false);

    /*
    ListView list = (ListView) view.findViewById(R.id.lvMySpecialList);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, mySpecialKeys);
    list.setAdapter(adapter);
    */
    return view;

}

質問は。

  1. 私の最初のタブには 2 つの部分が必要で、上部は 2 つのスライドを含むスライダーで、下部は 3 つの項目を含むリストである必要があります。フラグメント内でリストを膨らませるにはどうすればよいですか。ArrayAdapter を使用して (コメント付きのコードでわかるように)、StringArray から文字列を取得しようとしましたが、android.View.coreographer の問題がすべて発生してアプリがクラッシュします。

  2. 最初のリスト項目をタップすると、Tab1全体でレイアウトを同様の半画像/半リストに変更する必要がありますが、異なるフラグメントまたはアクティビティである必要があります。

    1. 2. - フラグメントに SherlockFragment (私と同じように) または SherlockFragmentActivity を使用する必要がありますか?

したがって、標準のリストとそれらへの入力が機能しないため、誰かが今すぐ助けることができれば、明らかに、フラグメントがどのように機能するか、および同じタブ内で異なるフラグメント/アクティビティを開始する方法についての知識が不足しています。

4

1 に答える 1