我正在开发一个应用程序,使用神探夏洛克库的ActionBar。我想在ActionBar的右端添加一个项目列表,即ListNavigation in ActionBar。
目前,我正在使用以下代码:
public class MainActivity extends SherlockFragmentActivity {
ActionBar mActionBar;
ViewPager mPager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/** Getting a reference to action bar of this activity */
mActionBar = getSupportActionBar();
/** Set tab navigation mode */
mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
SpinnerAdapter mSpinnerAdapter = ArrayAdapter.createFromResource(
this,
R.array.locations,
android.R.layout.simple_spinner_dropdown_item);
mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
mActionBar.setListNavigationCallbacks(mSpinnerAdapter, this);
/** Getting a reference to ViewPager from the layout */
mPager = (ViewPager) findViewById(R.id.pager);
/** Getting a reference to FragmentManager */
FragmentManager fm = getSupportFragmentManager();
/** Defining a listener for pageChange */
ViewPager.SimpleOnPageChangeListener pageChangeListener = new ViewPager.SimpleOnPageChangeListener(){
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
mActionBar.setSelectedNavigationItem(position);
}
};
/** Setting the pageChange listner to the viewPager */
mPager.setOnPageChangeListener(pageChangeListener);
/** Creating an instance of FragmentPagerAdapter */
MyFragmentPagerAdapter fragmentPagerAdapter = new MyFragmentPagerAdapter(fm);
/** Setting the FragmentPagerAdapter object to the viewPager object */
mPager.setAdapter(fragmentPagerAdapter);
mActionBar.setDisplayShowTitleEnabled(true);
/** Defining tab listener */
ActionBar.TabListener tabListener = new ActionBar.TabListener() {
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
mPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}
};
/** Creating Android Tab */
Tab tab = mActionBar.newTab()
.setText("Android")
.setIcon(R.drawable.android)
.setTabListener(tabListener);
mActionBar.addTab(tab);
/** Creating Apple Tab */
tab = mActionBar.newTab()
.setText("Apple")
.setIcon(R.drawable.apple)
.setTabListener(tabListener);
mActionBar.addTab(tab);
tab = mActionBar.newTab()
.setText("Apple-2")
.setIcon(R.drawable.apple)
.setTabListener(tabListener);
mActionBar.addTab(tab);
tab = mActionBar.newTab()
.setText("Apple-3")
.setIcon(R.drawable.apple)
.setTabListener(tabListener);
mActionBar.addTab(tab);
}
}1)但是我在mActionBar.setListNavigationCallbacks(mSpinnerAdapter, this);上下文中遇到了错误--这里不起作用。
2)我不知道如何弹出这个按钮上的列表。
3)另外,当我为导航列表实现这三行代码时
SpinnerAdapter mSpinnerAdapter = ArrayAdapter.createFromResource(
this,
R.array.locations,
android.R.layout.simple_spinner_dropdown_item);
mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
mActionBar.setListNavigationCallbacks(mSpinnerAdapter, this);我的桌子被藏起来了。请建议我帮帮我。
发布于 2013-03-29 06:28:38
1)您的活动是否实现了OnNavigationListener?情况似乎并非如此,您正在将对活动实例的引用传递给需要一个setListNavigationCallbacks()的OnNavigationListener ()。
我不知道你说的这个按钮点击是什么意思。
3)您的选项卡之所以隐藏,是因为您指定的是NAVIGATION_MODE_LIST而不是NAVIGATION_MODE_TABS。您只能拥有一个或另一个作为ActionBar的一部分。
如果希望同时使用选项卡和下拉选项卡,则可以在NAVIGATION_MODE_LIST中使用ActionBar,然后让活动中的片段包含一组选项卡。请看一下TabHost类。
https://stackoverflow.com/questions/15698405
复制相似问题