无法在Android导航抽屉的Fragment中添加选项卡。

8

1) 我按照 Android 开发者文档中的 导航抽屉示例 进行了操作,文档链接如下: developer.android.com/training/implementing-navigation/nav-drawer.html
我创建了整个应用程序。在给定的示例中,他们使用了 Fragment 作为抽屉中每个选项的元素,并使用以下代码:

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与片段不兼容(据我所知)。

是否有人能帮助我在我的应用程序中实现这种行为。先行致谢。


1
你解决了吗?如果是,请在这里发布解决方案...我也正在开发一个类似的应用程序,需要在片段中添加一个TabHost。 - MRX
1个回答

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个选项卡。如何解决这个问题?此外,选项卡似乎会覆盖抽屉,而应该是相反的。你是如何解决这些问题的? - Shivam Bhalla
是的,Bhalla先生,我也遇到了同样的问题。我不知道该如何解决它们,最终只好改变我的设计。 - Vishnu
我猜,Google Android代码库将有创建这种行为的代码(PlayStore中有此行为)。但是我无法获取PlayStore的代码,我想这是机密;-) - Vishnu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接