2013-11-08 2 views
0

Я разрабатываю приложение, в котором у меня есть четыре вкладки. Я хочу, чтобы при щелчке каждой вкладки панель действий должна меняться. Теперь я дал заголовок панели действий, строку поиска и значок переполнения. Но я хочу изменить панель действий при выборе каждой вкладки, чтобы я мог добавить значок в панель действий в соответствии с требованием выбора соответствующей вкладки.Как изменить панель действий при изменении вкладки?

Вот мой код ontabselection, пожалуйста, предложите, что я могу сделать. Любая помощь приемлема.

public void onTabSelected(Tab tab, FragmentTransaction ft) { 
      // TODO Auto-generated method stub 


      FragmentTransaction fragMentTra; 
      if (tab.getText().equals("DEALS")) { 
       try { 
        rl.removeAllViews(); 
       } catch (Exception e) { 
       } 

       ActionBar actionBar = getActionBar(); 
       actionBar.show(); 
       actionBar.setTitle("Deals"); 

       FragmentDeals Fram1 = new FragmentDeals(); 
       //fragMentTra.addToBackStack(null); 
       fragMentTra = getFragmentManager().beginTransaction(); 
       fragMentTra.add(rl.getId(), Fram1); 
       fragMentTra.commit(); 
      } 
      else if (tab.getText().equals("ORDER")) { 
       try { 
        rl.removeAllViews(); 
       } catch (Exception e) { 
       } 

       ActionBar actionBar = getActionBar(); 
       actionBar.show(); 
       actionBar.setTitle("Order"); 
       FragmentOrder Fram2 = new FragmentOrder(); 
       //fragMentTra.addToBackStack(null); 
       fragMentTra = getFragmentManager().beginTransaction(); 
       fragMentTra.add(rl.getId(), Fram2); 
       fragMentTra.commit(); 
      } 

      else if(tab.getText().equals("CART")){ 
       try { 
        rl.removeAllViews(); 
       } catch (Exception e) { 
       } 

       ActionBar actionBar = getActionBar(); 
       actionBar.show(); 
       actionBar.setTitle("Shopping Cart"); 
       FragmentCart fram3 = new FragmentCart(); 
       //fragMentTra.addToBackStack(null); 
       fragMentTra = getFragmentManager().beginTransaction(); 
       fragMentTra.add(rl.getId(), fram3); 
       fragMentTra.commit(); 
      } 



      else if(tab.getText().equals("HISTORY")){ 
       try { 
        rl.removeAllViews(); 
       } catch (Exception e) { 
       } 
       ActionBar actionBar = getActionBar(); 
       actionBar.show(); 
       actionBar.setTitle("History"); 
       FragmentHistory fram4 = new FragmentHistory(); 
       //fragMentTra.addToBackStack(null); 
       fragMentTra = getFragmentManager().beginTransaction(); 
       fragMentTra.add(rl.getId(), fram4); 
       fragMentTra.commit(); 
      } 

     } 

Спасибо.

+0

Вы хотите добавить пункт меню для каждой вкладки вправо? – Poutrathor

+0

да, вы правы. Я хочу добавить пункт меню. –

ответ

1

Я вижу, что вы используете фрагменты, чтобы делать свои вкладки. QUite легко вы можете объявить файл menu.xml для каждого фрагмента. Использование sethasOptionmenu (true) в построении фрагмента. Затем вы можете отрегулировать материал, если это необходимо в меню onCreate Option().

Edit: Вот пример:

@Override 
public void onCreate(Bundle arg0) { 
    super.onCreate(arg0); 
    setHasOptionsMenu(true); 
    actionBar = ((ActionBarActivity)getActivity()).getSupportActionBar(); 
} 
@Override 
public void onCreateOptionsMenu(android.view.Menu menu, android.view.MenuInflater inflater) { 
    if (!hideOptionsMenu) { 
     Log.e(TAG, " - onCreateOPTIONMenu");   
     inflater.inflate(R.menu.booking_accepted, menu); 
     MenuItem cancel = menu.findItem(R.id.cancel_booking_accepted); 
     cancel.getIcon().setAlpha(Constants.ENABLED_OPACITY); 
     menu.findItem(R.id.my_trips_switch).getIcon().setAlpha(Constants.ENABLED_OPACITY); 
    } 
    // (optional) reference to a OnItemSelectedListener, that you can use to perform actions based on user selection 
} 
+0

мы должны сделать ActionBarActivity? –

+0

Ах. ActionBarActivity здесь для целей совместимости. Вы должны решить, до какой версии вы хотите быть отсталой. – Poutrathor

+0

Ваш путь не ясен для меня. Будете ли вы меня понять? –

0

что-то похожее на Poutrathor, но четкому для меня. Я получил его отсюда: https://stackoverflow.com/a/15218201/1887635

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setHasOptionsMenu(true); 
} 

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.fragment_xxx, menu); 
} 
Смежные вопросы