不显示ActionBar选项卡

时间:2014-02-20 14:30:45

标签: android android-fragments android-tabs

我正在根据官方guide实施ActionBar标签。

我有一个添加到活动的片段。在那个片段中,我正在创建标签:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ActionBar actionBar = getActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    actionBar.setDisplayShowTitleEnabled(false);

    Tab tab = actionBar.newTab()
                       .setText("One")
                       .setTabListener(new TabListener<DemoFragment>(
                               this, "1", DemoFragment.class));
    actionBar.addTab(tab);

    tab = actionBar.newTab()
                   .setText("Two")
                   .setTabListener(new TabListener<DemoFragment>(
                           this, "2", DemoFragment.class));
    actionBar.addTab(tab);
}

但这些标签永远不会显示。也不是DemoFragment的内容。即使在运行时getActionBar().getTabCount()返回正确的选项卡数。我看到DemoFragment已初始化。我所看到的就是ActionBar。

我做错了什么?

我没有使用任何支持库,因为我正在为minSdk = 14开发。

1 个答案:

答案 0 :(得分:1)

更新

如果您不使用任何支持图书馆,这应该工作 否则你将不得不使用getSupportActionBar()和上面提到的依赖项。

尝试更像这样的事情:

// Get the Instance of the Action Bar, set Navigation Mode, remove title
ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setDisplayShowTitleEnabled(false);

// One tab
actionBar.addTab(actionBar.newTab() .setText("One")
                   .setTabListener(new TabListener<DemoFragment>(
                           this, "1", DemoFragment.class)));
// Two tab
actionBar.addTab(actionBar.newTab()
               .setText("Two")
               .setTabListener(new TabListener<DemoFragment>(
                       this, "2", DemoFragment.class)));

修改我用于演示的后期工作代码

以下是我使用Android sdk 14编写的演示应用程序的代码。就像你一样。

public class MainActivity extends Activity {

 // String Titles
static String [] titles = {"Fragment 1", "Fragment 2"};
static String [] fragmentClasses = {Fragment1.class.getName(), Fragment2.class.getName()};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    SimpleTabListener.SetUpTabNavigation(this, fragmentClasses, titles);
}

这是SimpleTabListener类

public class SimpleTabListener implements TabListener {


Context m_context;
String m_fragmentClassName ;
Fragment m_fragment = null;


public  SimpleTabListener(Context context, String tabFragmentClassName)
{
    m_context = context;
    m_fragmentClassName = tabFragmentClassName;
}

@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) 
{
    // TODO Auto-generated method stub


}
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft)
{
    if(m_fragment == null)
    {
        m_fragment = Fragment.instantiate(m_context, m_fragmentClassName);
        ft.add(android.R.id.content, m_fragment);
    }else
    {
        ft.attach(m_fragment);
    }

}
@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) 
{
    // TODO Auto-generated method stub
    if(m_fragment != null){
        // TODO Auto-generated method stub
        ft.detach(m_fragment);
    }
}


public static void SetUpTabNavigation(Activity activity, String [] classNames, String [] tabTitles){

    ActionBar actionBar = activity.getActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    ActionBar.TabListener listener;

    for(int i = 0; i <  tabTitles.length; i++)
    {
        listener = new SimpleTabListener(activity, classNames[i]);
        actionBar.addTab(actionBar.newTab().setText(tabTitles[i]).setTabListener(listener));

    }

}

}

Frament1.class

public class Fragment1 extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
    return inflater.inflate(R.layout.fragment_1, container, false);
}

}

Fragment 2.class

public class Fragment2 extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
    return inflater.inflate(R.layout.fragment2, container, false);

}

}