2012-11-29 36 views
1

正在使用操作欄與選項卡..我需要更改操作欄項目和標題取決於選項卡selection.I可以更改標題,但我不能更改該項目的圖標。如何實現帶碎片的Action Bar?

因爲actionBar.setTitle()是defalut方法。像這樣,沒有圖標和項目更改的默認方法..行動欄可以用於活動不片段..如何處理這種情況?請幫我

正在使用下面的代碼..

公共類ActionBarActivity延伸活動{

public static Context context; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.actionbar); 
    ActionBar actionBar = getActionBar(); 
    actionBar.setTitle("Action Bar"); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
    actionBar.show(); 



    ActionBar.Tab aTab = actionBar.newTab().setText("A"); 
    ActionBar.Tab bTab = actionBar.newTab().setText("B"); 
    ActionBar.Tab cTab = actionBar.newTab().setText("C"); 

    Fragment aFragment = new aActivity(); 
    Fragment bFragment = new bActivity(); 
    Fragment bFragment = new cActivity(); 

    aTab .setTabListener(new MyTabsListener(aFragment)); 
    bTab.setTabListener(new MyTabsListener(bFragment)); 
    cTab.setTabListener(new MyTabsListener(cFragment)); 

    actionBar.addTab(aTab); 
    actionBar.addTab(bTab); 
    actionBar.addTab(cTab); 


} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater menuInflater = getMenuInflater(); 
     menuInflater.inflate(R.menu.menu, menu); 
     return super.onCreateOptionsMenu(menu); 

} 
+0

是否有一個原因,你有一個靜態參照上下文? – dnkoutso

+0

不,我只是用它來做Toast消息顯示。此外,如果我正在使用活動,那麼我可以通過使用onCreateOptionsMenu(菜單菜單)和inflater來更改操作欄菜單項。但選項卡使用片段..所以我不能實現它..幫助我 – user1670564

回答

1
http://developer.android.com/guide/topics/manifest/application-element.html#logo 

安卓標誌 一種應用爲整個標識,併爲活動的默認標誌。 必須將此屬性設置爲對包含圖像的可繪製資源的引用(例如「@ drawable/logo」)。沒有默認標誌。

如果你的動作條就像福爾摩斯和基於菜單項,這是我的解決方案:

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    MenuItem switchButton = menu.findItem(R.id.SwitchSearchOption);  
    if(searchScriptDisplayed){ 
     switchButton.setIcon(R.drawable.menu_precedent); 
    }else{ 
     switchButton.setIcon(R.drawable.icon_search); 
    } 
    return super.onPrepareOptionsMenu(menu); 

} 
+0

非常感謝..讓我現在嘗試。 – user1670564

2
actionBar = getSupportActionBar(); 
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

actionBar.setTitle("Meeting"); 
actionBar.setDisplayShowHomeEnabled(false); 
actionBar.setDisplayShowCustomEnabled(false); 
actionBar.setDisplayShowTitleEnabled(false); 

/* Set Custom view */ 
ActionBar.Tab tab = actionBar.newTab(); 
// tab.setText("Meeting Users"); 
tab.setIcon(R.drawable.users); 
tab.setTabListener(this); 
actionBar.addTab(tab); 

tab = actionBar.newTab(); 
// tab.setText("Chat"); 
tab.setIcon(R.drawable.chat); 
tab.setTabListener(this); 
actionBar.addTab(tab); 

tab = actionBar.newTab(); 
// tab.setText("Video"); 
tab.setIcon(R.drawable.video_call); 
tab.setTabListener(this); 
tab.select(); 
actionBar.addTab(tab); 

tab = actionBar.newTab(); 
// tab.setText("Extra"); 
tab.setIcon(R.drawable.extra); 
tab.setTabListener(this); 
actionBar.addTab(tab); 

現在使用的自定義視圖爲你的標籤

ActionBar.Tab tab = getSupportActionBar().newTab(); 
    tab.setCustomView(R.layout.custom_tab_view); 

https://gist.github.com/3167287

http://actionbarsherlock.com/

+0

感謝您的幫助。我沒有使用sherlock aciton酒吧.. – user1670564

+0

它確定使用它,並歡迎 –

+0

請檢查我的代碼,並幫助我 – user1670564