2013-03-29 20 views
0

我正在使用一個應用程序,使用Sherlock Library的ActionBar。我想在ActionBar的右下角添加項目列表,也就是ListNavigation在ActionBar中。在Android中的Sherlock的Actionbar上添加ListNavigationCallbacks?

目前我使用下面的代碼:

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

我的選項卡得到了隱藏。 請建議我幫助我。

回答

1

1)您的活動是否實現OnNavigationListener?它似乎不是,並且您將一個對Activity實例的引用傳遞給需要OnNavigationListener的setListNavigationCallbacks()。

2)我不確定您點擊此按鈕的意思。

3)您的選項卡被隱藏,因爲您指定的是NAVIGATION_MODE_LIST而不是NAVIGATION_MODE_TABS。你只能有一個或另一個作爲ActionBar的一部分。

,如果你想這兩個標籤,你可以做什麼和下拉是ActionBar中使用NAVIGATION_MODE_LIST,然後讓活動中的片段含有一組選項卡。看看TabHost類。

+0

我的第2點解決了,謝謝你的建議。 只是在第三點得到問題 –

+0

我正在實施與選項卡的ActionBar ..所以我需要做什麼來顯示兩者? –

+0

已更新的答案。 –

相關問題