0

メインページのナビゲーションにActionBarを使用しています。このナビゲーションには、アプリのさまざまな領域への4つのタブが含まれています。

エリアの1つはマップセクションです。このセクションには、SQLiteデータベースから入力されたアイテムのリストを表示するための2つのサブタブが含まれている必要があります。

したがって、基本的には、ページフラグメントからネストされたナビゲーションを実装したいと思います。私がこれまでに持っているコードは次のとおりです。

   //MainActivity.java

            ActionBar actionBar = getActionBar();
    actionBar.setDisplayShowTitleEnabled(true);

    actionBar.setCustomView(R.layout.rowlayout);

    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    LayoutInflater inflater = (LayoutInflater)         this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    RelativeLayout layoutView = (RelativeLayout)inflater.inflate(R.layout.action_bar_tab,   null);
    TextView tabText = (TextView) layoutView.findViewById(R.id.tabText);
    ImageView tabImage = (ImageView) layoutView.findViewById(R.id.tabImage);


    String dayOneName = getResources().getString(R.string.day_one);
    Tab tab = actionBar.newTab();
    tab.setIcon(R.drawable.cal);
    TabListener<AgendaMain> dayOne = new TabListener<AgendaMain>(this,
            dayOneName, AgendaMain.class);
    tab.setTabListener(dayOne); 
    // set custom view
    tabText.setText(dayOneName);
    tabImage.setImageResource(R.drawable.cal);
    tab.setCustomView(layoutView);
    actionBar.addTab(tab);

    // Plus three more navigation tabs


  private class TabListener<T extends Fragment> implements
    ActionBar.TabListener {

    private Fragment mFragment;
    private final Activity mActivity;
    private final String mTag;
    private final Class<T> mClass;

    public TabListener(Activity activity, String tag, Class<T> clz) {
        mActivity = activity;
        mTag = tag;
        mClass = clz;
    }

    @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        // Check if the fragment is already initialized
        if (mFragment == null) {
            // If not, instantiate and add it to the activity
            mFragment = Fragment.instantiate(mActivity, mClass.getName());
            ft.add(android.R.id.content, mFragment, mTag);
        } else {
            // If it exists, simply attach it in order to show it
            ft.attach(mFragment);
        }
    }

    @Override
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
        if (mFragment != null) {
            // Detach the fragment, because another one is being attached
            ft.detach(mFragment);
        }
    }
    @Override
    public void onTabReselected(Tab tab, android.app.FragmentTransaction ft) {
        // User selected the already selected tab. Usually do nothing.
    }
}

そして、上のタブはフラグメントにリンクしています。ここで、2つの新しいタブを追加し、両方のタブにListFragmentを表示します。

ここからFragmentTabHostを実装しようとしましたが、android.support.v4.appとMainActivity.javaのTabListenerの間で問題が発生します。これまでのところ、すべてのコードは機能しており、フラグメントにタブを追加しようとしています。

誰かがこれを実装するための最良の方法を提案/示すことができれば、それは大いにありがたいです(:私はこれまで静的コンテンツを表示することができましたが、これは良くありません!(要求された場合はコードをもっと投稿します、私はそれを疑っています私は運がなかったので助けになるでしょう!)

4

1 に答える 1

0

TabHost は非推奨のソリューションであり、代わりに ViewPager を使用します。FragmentPagerAdapter または FragmentStatePagerAdapter の実装例は次の場所にあります。

http://developer.android.com/reference/android/support/v4/view/ViewPager.html
http://storkme.org/2011/12/tabs-done-right-viewpager-and-fragments/
http:/ /droidapp.co.uk/2012/05/25/android-dev-actionbarsherlock-tabs-viewpager/

于 2013-01-15T18:36:34.197 に答える