0

テキストとアイコンが表示されないメニュー項目の問題 1 : http://i.stack.imgur.com/WYniI.png

アプリでタブ メニューを表示するためのコードを作成しました。正常に動作しますが、一部のモバイル タブでは、添付の画像に示すようにテキストとアイコンが表示されません。フラグメントを使用しています。

 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) {

    }
}
4

0 に答える 0