2013-04-16 5 views
1

Я создал ActionBar с некоторым количеством вкладок динамически, как показано ниже.Меню на панели действий Android

public void addTabBar(Context context) 
{  
    sActiveContext=context;  
    sActionBar = getActionBar(); 
    sActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
} 

public void addTabItem(final String url, String tabTitle) 
{ 
    arrayList.add(url); 
    Tab tab = sActionBar.newTab(); 
    if(tabTitle.equals("")) 
    { 
     int childcount=sActionBar.getTabCount(); 
     tabTitle="Tab" + String.valueOf(childcount+1);   
    } 
    tab.setText(tabTitle);   
    tab.setTabListener(this); 
    sActionBar.addTab(tab);   
} 

    @Override 
    public void onTabSelected(Tab tab, FragmentTransaction ft) { 
     // TODO Auto-generated method stub 
     linearLayout=new LinearLayout(sActiveContext);  
     linearLayout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); 
     linearLayout.setOrientation(LinearLayout.VERTICAL); 
     setContentView(linearLayout); 
     CustomWebView webview=new CustomWebView(sActiveContext); 
     FrameLayout layout=webview.createwebview(); 

     for (int i = 0; i < arrayList.size(); i++) { 
      if(tab.getPosition()==i) 
      { 
       webview.initwebview(arrayList.get(i)); 
       break; 
      } 
     } 
    linearLayout.addView(layout); 
    } 

Если я преобразовал этот код в библиотеку и вызываю эти методы, и я могу создать n количество вкладок в панели действий. Теперь я хочу добавить пункты меню и выпадающее меню (эллипс с тремя точками), как в приведенной ниже ссылке. http://developer.android.com/guide/topics/ui/actionbar.html#Tabs Если я передаю изображение методу showMenu (R.drawable.menu_image), элементы меню должны быть динамически созданы. Как я могу это достичь? Пожалуйста, дайте несколько предложений.

+0

showMenu (R.drawable .menu_image)? –

+0

Да, если я вызываю этот метод в onCreate(), элементы меню на панели действий должны создаваться динамически. Как я могу это понять? – Karthick

+0

Я принял ответ Сино. – Karthick

ответ

1

Попробуйте, В вашей деятельности,

private Menu menu=null; 
@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    this.menu=menu; 
    // call here as, showMenu(R.drawable.menu_image,2222); 
    return true; 
} 
private void showMenu(int imageIcon,int id)//Where imageIcon is R.drawable.menu_image 
{ 
    menu.add(0, id, 0, actionString).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);; 
    MenuItem item=menu.findItem(id); 
    item.setIcon(imageIcon); 
} 
+0

Г-н Картик, проверьте этот ответ. –

+0

Я проверил. Но меню всегда равно нулю. Я вызвал метод shoMenu() в методе onCreate(). – Karthick

+1

При вызове showMenu() на onCreate, меню имеет значение null. Поскольку onCreateOptionsMenu (меню меню) является вызовом после onCreate. Таким образом, вы должны вызвать это funtion внутри onCreateOptionsMenu (меню меню) после инициализации меню. См. Выше ответ ... –

0

попробовать это для ручки все меню для деятельности, и чесотка все меню для фрагмента операции по изменению вкладки,

private Menu menu=null; 

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    this.menu=menu; 
    // call here as, showMenu(R.drawable.menu_image,2222); 
    // add all menu's when that needed in your activity like save,cancel,choose color, //close etc. 
    menuHandler(0); 
    return true; 
} 
private void showMenu(int imageIcon,int id)//Where imageIcon is R.drawable.menu_image 
{ 
    menu.add(0, id, 0, actionString).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);; 
    MenuItem item=menu.findItem(id); 
    item.setIcon(imageIcon); 
} 
    private menuHandler(int position) 
{ 
if(position==0)//For tab 1 
{ 
if(!menu.findItem(1111).isVisible()) //check menu item with id 1111 is visible 
    menu.findItem(1111).setVisible(true); 
if(menu.findItem(2222).isVisible()) 
    menu.findItem(2222).setVisible(false); 
} 
else if(position==0) 
{ 
if(menu.findItem(1111).isVisible()) 
    menu.findItem(1111).setVisible(false); 
if(menu.findItem(2222).isVisible()) 
    menu.findItem(2222).setVisible(false); 
} 
else 
{ 
if(menu.findItem(3333) 
     menu.findItem(3333).setVisible(false); 
if(!menu.findItem(2222).isVisible()) 
    menu.findItem(2222).setVisible(true); 
} 
} 
@Override 
    public void onTabReselected(Tab tab, android.app.FragmentTransaction ft) 
    {} 
    @Override 
    public void onTabSelected(Tab tab, android.app.FragmentTransaction ft) 
    { 
menuHandler(tab.getPosition()); 
} 
+0

Спасибо Sino. Дай мне попробовать. Не могли бы вы дать мне рекомендации относительно этого http://stackoverflow.com/questions/16139259/changing-actionbar-tabs-underline-color-progrmatically. – Karthick

+0

Привет, Это работает нормально. Я загружаю webview в вкладки. Если я нажимаю ссылку, которая переходит на другую страницу на первой вкладке. Мне нужно обновить пункты меню на этой странице. Как я могу это достичь? Пожалуйста, помогите мне. – Karthick

+0

использование такой же задачи, с некоторыми условиями .. –

Смежные вопросы