菜单项实例化列表器-Android片段-

菜单项实例化列表器-Android片段-,android,Android,: 我已经编写了在我的应用程序中显示选项卡菜单的代码。它可以正常工作,但在某些手机选项卡中,并没有显示如所附图像所示的文本和图标。我用的是碎片 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TabHelper tabHelper = getTabHelper(); Comp

:

我已经编写了在我的应用程序中显示选项卡菜单的代码。它可以正常工作,但在某些手机选项卡中,并没有显示如所附图像所示的文本和图标。我用的是碎片

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);
    TabHelper tabHelper = getTabHelper();

    CompatTab menuTab = tabHelper.newTab("menu").setText(R.string.tab_section1).setIcon(
            R.drawable.home_icon).setTabListener(
            new InstantiatingTabListener(this, MenuFragment.class));

    tabHelper.addTab(menuTab);
经过大量的分类,我发现下面的代码有问题

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    super.onCreateOptionsMenu(menu);
    //nothing xml written for menu 
}
所以我尝试添加以下代码

  @Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {

        case R.id.menufav:
            Intent menuintent = new Intent(this, FavouritesFragment.class);
            startActivity(menuintent);
            break;

        default:
            break;
    }
    return super.onOptionsItemSelected(item);
}
但由于它是片段,我们不能使用意图。它抛出了铸造错误

现在我该如何解决这个问题?我有下面的类用于单击侦听器。我想利用它

 public static class InstantiatingTabListener implements CompatTabListener {

    private final TabCompatActivity mActivity;
    private final Class mClass;

    /**
     * Constructor used each time a new tab is created.
     * 
     * @param activity The host Activity, used to instantiate the fragment
     * @param cls The class representing the fragment to instantiate
     */
    public InstantiatingTabListener(TabCompatActivity activity, Class<? extends Fragment> cls) {
        mActivity = activity;
        mClass = cls;
    }

    /* The following are each of the ActionBar.TabListener callbacks */
    @Override
    public void onTabSelected(CompatTab tab, FragmentTransaction ft) {
        // Check if the fragment is already initialized
        Fragment fragment = tab.getFragment();
        if (fragment == null) {
            // If not, instantiate and add it to the activity
            fragment = Fragment.instantiate(mActivity, mClass.getName());
            tab.setFragment(fragment);
            ft.add(android.R.id.tabcontent, fragment, tab.getTag());
        } else {
            // If it exists, simply attach it in order to show it
            ft.attach(fragment);
        }
    }

    @Override
    public void onTabUnselected(CompatTab tab, FragmentTransaction ft) {
        Fragment fragment = tab.getFragment();
        if (fragment != null) {
            // Detach the fragment, because another one is being attached
            ft.detach(fragment);
        }
    }

    @Override
    public void onTabReselected(CompatTab tab, FragmentTransaction ft) {

    }
}
公共静态类实例化tablistener实现CompatiblListener{
私人最终活动能力;
私人期末班;
/**
*每次创建新选项卡时使用的构造函数。
* 
*@param activity主机活动,用于实例化片段
*@param cls表示要实例化的片段的类
*/

公共实例化tablistener(TabCompatActivity活动,类Android SDK中没有
TabHelper
CompatTab
类。也许你应该与这些类的开发人员讨论你的问题,不管他们是谁。“但由于它是片段,我们不能使用意图。它会引发转换错误。”--您的
Intent
构造函数的第一个参数是
Context
,而
startActivity()
Context
上的一个方法。您的片段可以通过调用
getActivity()
获得相关的
上下文。您能给我演示getActivity()的示例代码吗?这会很有帮助。将android升级到4.1.1后问题已解决:)