рд╕рдорд░реНрдерди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде Android 2.1+ рдкрд░ ActionBarред рднрд╛рдЧ 2 - рдиреЗрд╡рд┐рдЧреЗрд╢рди

рд╣реЗрд▓реЛ, рд╣реЗрдмреНрд░!

рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рд╕рдорд░реНрдерди рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдереА рдФрд░ рдПрдХ рд╕рдкреЛрд░реНрдЯрдПрд╢рдирдмрд╛рд░ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдмрд╛рд░ рдПрдХреНрд╢рдирдмрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХреЗрд╡рд▓ рдореЗрдиреВ рдХреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрдЯреМрддреА рдХреЗ рддрд╣рдд рдпрд╣ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рддрд░реАрдХреЗ

ActionBar рдореЗрдВ 3 рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ:
NAVIGATION_MODE_STANDART - рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ, рдмрд╕ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ ActionBar;
NAVIGATION_MODE_LIST - рд╣реЗрдбрд░ рдХреЗ рдмрдЬрд╛рдп рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА;
NAVIGATION_MODE_TABS - ActionBar рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЯреИрдмред

рдбреНрд░реЙрдк рдбрд╛рдЙрди рд╕реВрдЪреА

рдЪрд▓реЛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд▓реЗрддреЗ рд╣реИрдВред рдЪрд▓реЛ рдПрдХ рдирдпрд╛ рд╡рд░реНрдЧ рдмрдирд╛рддреЗ рд╣реИрдВ - рд╕реНрдХреНрд░реАрдирдлреНрд░реИрдЧрдореЗрдВрдЯ , рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдХреНрд░реАрди рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реЛрдЧрд╛:

import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; public class ScreenFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { TextView tv = new TextView(getActivity()); tv.setText("Screen " + getArguments().getInt(MainActivity.key_screen_number)); tv.setTextSize(30); return tv; } } 


рдореИрдВрдиреЗ рдПрдХ рдЕрд▓рдЧ xml рдорд╛рд░реНрдХрдЕрдк рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рдмрдирд╛рдИ, рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣рд╛рдБ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдо рддрд░реНрдХреЛрдВ рд╕реЗ рд╕реНрдХреНрд░реАрди рдирдВрдмрд░ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдмрдирд╛рдП рдЧрдП TextView рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдо рдлрд┐рд░ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред
OnCreate () рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдмрджрд▓реЗрдВ рдФрд░ MainActivity рдореЗрдВ рдПрдХ рдФрд░ рдЬреЛрдбрд╝реЗрдВ:

  public static final String key_screen_number = "key_screen_number"; ActionBar ab; FragmentTransaction ft; ScreenFragment screen_fragment; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ab = getSupportActionBar(); ab.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); String[] screens = new String[] {"Screen 1", "Screen 2", "Screen 3"}; ArrayAdapter<String> sp_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, screens); sp_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); ab.setListNavigationCallbacks(sp_adapter, this); selected_list_item_position = -1; ab.setSelectedNavigationItem(0); } public boolean onNavigationItemSelected(int position, long id) { ft = getSupportFragmentManager().beginTransaction(); screen_fragment = new ScreenFragment(); Bundle args = new Bundle(); args.putInt(key_screen_number, position + 1); screen_fragment.setArguments(args); ft.replace(android.support.v7.appcompat.R.id.action_bar_activity_content, screen_fragment); ft.commit(); return true; } 


OnCreate рдореЗрдВ, рд╣рдо ActionBar рдХреЛ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╡рд┐рдзрд┐ - рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдбреЗрдкреНрдЯрд░ рддреИрдпрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рднреА рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВрдЧреЗред рдЗрд╕рдХреА рдПрдХ рд╣реА рд╡рд┐рдзрд┐ рд╣реИ - onNavigationItemSelected (int position, long id) ред рдпрд╣ рддрдм рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдореЗрдВ рдХрд┐рд╕реА рдЖрдЗрдЯрдо рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╣рдо рдПрдХ рдирдпрд╛ ScreenFragment рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╕реНрдХреНрд░реАрди рдирдВрдмрд░ рджреЗрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╡рд╣ рдЗрд╕реЗ рджрд┐рдЦрд╛ рд╕рдХреЗред рдлрд┐рд░ рд╣рдо FragmentTransaction рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдЯреБрдХрдбрд╝реЗ рдХреЛ id = android.support.v7.appcompat.R.id.action_bar_activity_content рдХреЗ рд╕рд╛рде View рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдпрд╣ рдлрд╝реНрд░реЗрдорд▓реИрдЯрдЖрдЙрдЯ рд╣реИ, рдЬрд╣рд╛рдВ рд╕реЗрдЯрдХреЙрдиреНрдЯреЗрдВрдЯ рд╡реНрдпреВ () рд╕реЗ рд╣рдорд╛рд░рд╛ рд▓реЗрдЖрдЙрдЯ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдХреНрд░реАрди рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ:







рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рд░реНрдХрдЕрдк рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рд╕рд┐рд╕реНрдЯрдо рд▓реЗрдЖрдЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред Adapter.setDropDownViewResource () рд╡рд┐рдзрд┐ рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИред

рдЯреИрдм


рдЯреИрдм рдХреЛ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЦреНрдпрддрд╛ рдХреЛ рдореЛрдбрд╝реЗрдВ :

  public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ab = getSupportActionBar(); ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); Tab tab = ab.newTab(); tab.setText("Screen 1"); tab.setTabListener(this); ab.addTab(tab, 0, true); tab = ab.newTab(); tab.setText("Screen 2"); tab.setTabListener(this); ab.addTab(tab, 1, false); tab = ab.newTab(); tab.setText("Screen 3"); tab.setTabListener(this); ab.addTab(tab, 2, false); } 


рддреБрдо рднреА MainActivity рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ ... рдФрдЬрд╛рд░ ... TabListener ред рдпрд╣ рдПрдХ рдЯреИрдм рдХреНрд▓рд┐рдХ рд╣реИрдВрдбрд▓рд░ рд╣реИред рдЙрд╕рдХреЗ рдкрд╛рд╕ 3 рддрд░реАрдХреЗ рд╣реИрдВ:
onTabUnselected (рдЯреИрдм рдЯреИрдм, FragmentTransaction ft) - рдЬрдм рдореМрдЬреВрджрд╛ рдЯреИрдм рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ;
onTabSelected (рдЯреИрдм рдЯреИрдм, FragmentTransaction ft) - рдЬрдм рдПрдХ рдирдпрд╛ рдЯреИрдм рдЦреЛрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрдм рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ);
onTabReselected (рдЯреИрдм рдЯреИрдм, FragmentTransaction ft) - рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рд▓реЗ рд╕реЗ рдЦреБрд▓реЗ рдЯреИрдм рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ:

  public void onTabUnselected(Tab tab, FragmentTransaction ft) { } public void onTabSelected(Tab tab, FragmentTransaction ft) { screen_fragment = new ScreenFragment(); Bundle args = new Bundle(); args.putInt(key_screen_number, tab.getPosition() + 1); screen_fragment.setArguments(args); ft.replace(android.support.v7.appcompat.R.id.action_bar_activity_content, screen_fragment); } public void onTabReselected(Tab tab, FragmentTransaction ft) { } 


рдпрд╣рд╛рдБ рд╣рдореЗрдВ рдЕрдм FragmentTransaction рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╣рдореЗрдВ рд╢реБрд░реВ рдореЗрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ)ред рд▓реЗрдХрд┐рди рдЗрд╕ FragmentTransaction рдХреЗ рд▓рд┐рдП, рдЖрдк addToBackStack () рдФрд░ рдХрдорд┐рдЯ () рддрд░реАрдХреЗ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддреЗред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рджрдмрд╛рдпрд╛ рд╣реБрдЖ рдЯреИрдм рднреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рд╣рдо рдЕрдкрдиреА рдЬрд╝рд░реВрд░рдд рдХреА рд╣рд░ рдЪреАрдЬрд╝ рдЦреАрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ - рдЯреЗрдХреНрд╕реНрдЯ, рдЖрдЗрдХрди, рдкреЛрдЬрд╝рд┐рд╢рди, рдЖрджрд┐
рдпрджрд┐ рдЖрдк рд╕рд┐рд╕реНрдЯрдо рдЖрдкрдХреЛ рд╕реВрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЕрдкрдиреЗ рджреГрд╢реНрдп рдХреЛ рдЯреИрдм рдЕрд╕рд╛рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - setCustomView (int layoutResId)
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ, рдЯреИрдм рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ:





рд╡реИрд╕реЗ, рдпрджрд┐ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЯреИрдм рд╣реИрдВ, рддреЛ рдЙрдирдХреЗ рд╣реЗрдбрд░ рдХреЛ рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ Google Play рдореЗрдВ), рд▓реЗрдХрд┐рди рд╣реЗрдбрд░реНрд╕ рдХреЗ рдиреАрдЪреЗ рд╕реНрд╡рд╛рдЗрдк рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

"рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА" рдХреЗ рдЕрд▓рд╛рд╡рд╛


рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЬрдм рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЪрдпрдирд┐рдд рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЖрдЗрдЯрдо рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рдХреБрдЫ рднреА рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЦреИрд░, рдЯреИрдм рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ - onTabReselected () рд╡рд┐рдзрд┐ рдХреЛ рд╕реНрдкрд░реНрд╢ рди рдХрд░реЗрдВ рдФрд░ рдпрд╣реА рд╡рд╣ рд╣реИред рд▓реЗрдХрд┐рди рд╕реВрдЪреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ: MainActivity рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрд░ рдЬреЛрдбрд╝реЗрдВ
 private int selected_list_item_position; 

рдФрд░ рдХреЛрдб рдХреЛ рдмрджрд▓реЗрдВ OnNavigationItemSelected (int рд╕реНрдерд┐рддрд┐, рд▓рдВрдмреА рдЖрдИрдбреА) :

  public boolean onNavigationItemSelected(int position, long id) { if (position != selected_list_item_position) { ft = getSupportFragmentManager().beginTransaction(); screen_fragment = new ScreenFragment(); Bundle args = new Bundle(); args.putInt(key_screen_number, position + 1); screen_fragment.setArguments(args); ft.replace(android.support.v7.appcompat.R.id.action_bar_activity_content, screen_fragment); ft.commit(); selected_list_item_position = position; return true; } return false; } 


рдЕрдм рдПрдХ рдирдИ рд╕реНрдХреНрд░реАрди рддрднреА рдЦреБрд▓реЗрдЧреА рдЬрдм рдЖрдк рдПрдХ рдЦреБрд▓реЗ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЖрдЗрдЯрдо рдХрд╛ рдЪрдпрди рдХрд░реЗрдВрдЧреЗред

рдореЗрдиреНрдпреВ


рд╡рд┐рднрд┐рдиреНрди рдЯреИрдм рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рдЕрд▓рдЧ рд╕рд╛рдордЧреНрд░реА рд╣реЛрддреА рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдореЗрдиреВ рдЕрд▓рдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред Google рдХреЗ рд▓реЛрдЧреЛрдВ рдиреЗ рдпрд╣ рдЕрд╡рд╕рд░ рдмрдирд╛рдпрд╛ред рдЕрдЧрд▓рд╛, рдореИрдВ рдЯреИрдм рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╕рдм рдХреБрдЫ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ред рдирд┐рдореНрди рдХреЛрдб рдХреЛ ScreenFragment рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:

  public static final String key_menu_resource = "key_menu_resource"; @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); inflater.inflate(getArguments().getInt(key_menu_resource), menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { super.onOptionsItemSelected(item); Log.d("MENU", "Cliced MenuItem is " + item.getTitle() + " (from ScreenFragment)"); return true; } 


рд░реЗрд╕ / рдореЗрдиреВ / рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рддреАрди рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдПрдВ:

screen_1.xml :

 <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/item1" android:title="Item 1" android:icon="@android:drawable/ic_menu_add"/> <item android:id="@+id/settings" android:title="Settings" android:icon="@android:drawable/ic_menu_edit"/> </menu> 


screen_2.xml :

 <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/item2" android:title="Item 2" android:icon="@android:drawable/ic_menu_camera"/> <item android:id="@+id/settings" android:title="Settings" android:icon="@android:drawable/ic_menu_edit"/> </menu> 


screen_3.xml :

 <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/item3" android:title="Item 3" android:icon="@android:drawable/ic_menu_call" /> </menu> 


OnTabSelected () рдмрджрд▓реЗрдВ:

  private int[] menu_resources = new int[] {R.menu.screen_1, R.menu.screen_2, R.menu.screen_3}; public void onTabSelected(Tab tab, FragmentTransaction ft) { screen_fragment = new ScreenFragment(); Bundle args = new Bundle(); args.putInt(key_screen_number, tab.getPosition() + 1); args.putInt(ScreenFragment.key_menu_resource, menu_resources[tab.getPosition()]); screen_fragment.setArguments(args); screen_fragment.setHasOptionsMenu(true); ft.replace(android.support.v7.appcompat.R.id.action_bar_activity_content, screen_fragment); } 


рдЕрдм рд╣рдореЗрдВ onCreateOptionsMenu рд╡рд┐рдзрд┐ рдХреЛ рд╣рдЯрд╛рдирд╛ (рдпрд╛ рдмреЗрд╣рддрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдирд╛) рдЪрд╛рд╣рд┐рдП - рдпрд╣ рдХреЗрд╡рд▓ рд╣рдорд╛рд░реЗ рд╕рд╛рде рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░реЗрдЧрд╛ред рдФрд░ рдореЗрдирдСрдХреНрдЯрд┐рд╡рд┐рдЯреА рдореЗрдВ onOptionsItemSelected () рдХреЛ рднреА рдЯреНрд╡реАрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

  @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() != R.id.settings) { return false; } else { Log.d("MENU", "Cliced MenuItem is " + item.getTitle() + " (from MainActivity)"); return true; } } 


рдЕрдм рдореИрдВ рд╕рдордЭрд╛рддрд╛ рд╣реВрдБ рдХрд┐ рдореИрдВрдиреЗ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рдХрд┐рдпрд╛ред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдПрдХ рдореЗрдиреВ рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕реЗ рджреГрд╢реНрдпрдорд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ Fragment.setHasOptionsMenu (рд╕рд╣реА) рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдЧрд░ рд╣рдо рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рдореЗрдВ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдПрдХ рдореЗрдиреНрдпреВ рдореЗрдВ рдореЗрдиреНрдпреВ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ onOptionsItemSelected () рдкрджреНрдзрддрд┐ рдХреЛ рдкрд╣рд▓реЗ MainActivity рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА ScreenFragment рдореЗрдВ рдпрджрд┐ рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рдореЗрдВ рдЧрд▓рдд рд░рд┐рдЯрд░реНрди рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЕрдЧрд░ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рд╕реНрд╡рд┐рдЪ / рдХреЗрд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рд╕рдЪ рд▓реМрдЯреЗрдВ; рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдХреНрд▓рд┐рдХ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ onOptionsItemSelected рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдЯреИрдм рдкрд░ рдПрдХ рдореЗрдиреВ рдЖрдЗрдЯрдо "рд╕реЗрдЯрд┐рдВрдЧреНрд╕" рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдХреЛрдб рдЯрд╛рдЗрдк рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрдм рд╣рдо рдЗрд╕ рдЖрдЗрдЯрдо рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╣рдо рд╡рд╛рдкрд╕ рд▓реМрдЯ рдЖрддреЗ рд╣реИрдВ ред рддрдм onOptionsItemSelected () рдХреЛ рдХреЗрд╡рд▓ рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╣рдо рдПрдХ рдирдпрд╛ SettingsActivity рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред рдпрджрд┐ рдЖрдк рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд▓рд╛рддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЯреИрдм рдкрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ "рдореЗрдиреВ" рдмрдЯрди рджрдмрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╡рд┐рднрд┐рдиреНрди рддрддреНрд╡ рджрд┐рдЦрд╛рдП рдЬрд╛рдПрдВрдЧреЗред
рдЬрдм рдЖрдк рд▓реЙрдЧ рдореЗрдВ рдореЗрдиреВ рдЖрдЗрдЯрдо рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рди рдХреЗрд╡рд▓ рдЙрдирдХрд╛ рдирд╛рдо рд╣реЛрдЧрд╛, рдмрд▓реНрдХрд┐ рдпрд╣ рднреА рдХрд┐ рдХрд┐рд╕ рдХрдХреНрд╖рд╛ рдореЗрдВ рдХреНрд▓рд┐рдХ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЧрдП рдереЗред рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рдЗрд╕ рд╕реЗрдЯрд┐рдВрдЧ рддрддреНрд╡ рдХреЗ рд╕рд╛рде Res / рдореЗрдиреВ / рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ xml рдлрд╝рд╛рдЗрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ onCreateOptionsMenu () рд╡рд┐рдзрд┐ рдореЗрдВ MainActivity рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдПрдХ рдореЗрдиреВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдлрд┐рд░ 2 рдореЗрдиреВ рдРрд╕реЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдПрдХрдЬреБрдЯ рд╣реЛрдВ, рдФрд░ рджреЛрдиреЛрдВ рдХреЗ рдмрд┐рдВрджреБ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗред

рд░рд╛рдЬреНрдп рд╕рдВрд░рдХреНрд╖рдг


рдЕрдХреНрд╕рд░ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЯреИрдм рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╕рдордп, рдЙрди рдкрд░ рд╕рд╛рдордЧреНрд░реА рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдзрд┐ рд╣реЛрддреА рд╣реИ - рд╕реЗрдЯрдЯреНрд░реИрдирдЗрдирд╕реНрдЯреЗрдВрд╕ (рдмреВрд▓рд┐рдпрди рд░рд┐рдЯреЗрди) ред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рд╕рдЪ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо MainActivity рдореЗрдВ onTabSelected () рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ :

  private int[] menu_resources = new int[] {R.menu.screen_1, R.menu.screen_2, R.menu.screen_3}; private ScreenFragment[] screens = new ScreenFragment[] {new ScreenFragment(), new ScreenFragment(), new ScreenFragment()}; public void onTabSelected(Tab tab, FragmentTransaction ft) { screen_fragment = screens[tab.getPosition()]; Bundle args = new Bundle(); args.putInt(key_screen_number, tab.getPosition() + 1); args.putInt(ScreenFragment.key_menu_resource, menu_resources[tab.getPosition()]); screen_fragment.setArguments(args); screen_fragment.setHasOptionsMenu(true); screen_fragment.setRetainInstance(true); ft.replace(android.support.v7.appcompat.R.id.action_bar_activity_content, screen_fragment); } 


рдЕрдВрддрднрд╛рд╖рдг


рдЦреИрд░, рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдореИрдВ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рд▓реЗрдЦ рдмрдбрд╝рд╛ рдирд┐рдХрд▓рд╛, рд▓реЗрдХрд┐рди, рдЙрдореНрдореАрдж рд╣реИ, рдЙрдкрдпреЛрдЧреА)

рднрд╛рдЧ 1 - рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд░реНрдерди рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬреЛрдбрд╝рдирд╛, рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг, рдЦреЛрдЬ
рднрд╛рдЧ 3 - рдЙрдиреНрдирдд рд╕реБрд╡рд┐рдзрд╛рдПрдБ

Source: https://habr.com/ru/post/In189678/


All Articles