菜单项实例化列表器-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后问题已解决:)