【问题标题】:Unable to add Tabs inside Fragment of Navigation Drawer Android无法在导航抽屉Android的片段中添加标签
【发布时间】:2013-11-08 10:37:13
【问题描述】:

1) 我在这里遵循了 Android 开发者文档中的导航抽屉示例 developer.android.com/training/implementing-navigation/nav-drawer.html
并创建了我的整个应用程序。在给定的示例中,他们为 Drawer 中选择的每个项目使用了 Fragments,称为 Fragments,代码如下

Bundle args = new Bundle();
args.putInt("Title_Number", position);
fragment.setArguments(args);
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();

2) 现在我想要一个片段内的选项卡行为,即,当我在导航抽屉中选择特定项目时,加载的片段应显示一个选项卡栏在顶部是这样的。 http://flic.kr/p/hn4G3i

3) 我已按照此处给出的教程和示例进行操作
developer.android.com/training/implementing-navigation/lateral.html
但此处给出的示例使用的是不兼容的 FragmentActivity与片段(据我所知)。

有人可以帮我在我的应用中实现这种行为吗?提前致谢。

【问题讨论】:

  • 你得到解决方案了吗,如果有,请在此处发布解决方案....我也在做一个有点像这样的应用程序,需要在片段中添加一个 tabhost

标签: android android-fragments android-tabs navigation-drawer


【解决方案1】:
import android.app.ActionBar;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import cgg.gov.in.apps.eoffice.source.R;

public class TestTabsinsideFragment extends Fragment
{
    View rootView;

public TestTabsinsideFragment () 
{
    // Empty constructor required for fragment subclasses
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle     savedInstanceState)
{   

getActivity().getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

// Apply the layout for the fragment
rootView = inflater.inflate(R.layout.approve_leaves, container, false);


getActivity().setTitle("New tabbed layout inside Fragment :-) ");


ActionBar.TabListener tabListener = new ActionBar.TabListener() {
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
        // show the given tab
    }

    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
        // hide the given tab
    }

    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
        // probably ignore this event
    }
};

// Add 3 tabs, specifying the tab's text and TabListener
for (int i1 = 0; i1 < 3; i1++) {
    getActivity().getActionBar().addTab(
            getActivity().getActionBar().newTab()
            .setText("Tab " + (i1 + 1))
            .setTabListener(tabListener));
}


return rootView;
}

我自己解决了这个问题。 :D

【讨论】:

  • 我尝试实现你在这里所做的。但是您是否注意到,如果您现在导航到另一个抽屉片段并返回,它每次都会创建 3 个选项卡项。如何解决这个问题?此外,标签似乎覆盖了抽屉,而它应该是相反的。你是如何解决这些问题的?
  • 是的。 Bhalla 先生,我也遇到过同样的问题。我不知道如何修复它们,我结束了改变我的设计。
  • 我猜,Google Android 代码库将有用于创建此类行为的代码(此行为在 PlayStore 中有)。但后来我无法获得 PlayStore 的代码,我猜它是机密的 ;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多