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