package ru.shutoff.cgstarter; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarActivity; import android.view.View; import java.lang.reflect.Field; import java.lang.reflect.Method; public class Preferences extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.pager); final ViewPager pager = (ViewPager) findViewById(R.id.pager); PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager()); pager.setAdapter(adapter); final ActionBar actionBar = getSupportActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); ActionBar.TabListener tabListener = new ActionBar.TabListener() { @Override public void onTabSelected(ActionBar.Tab tab, android.support.v4.app.FragmentTransaction fragmentTransaction) { pager.setCurrentItem(tab.getPosition()); } @Override public void onTabUnselected(ActionBar.Tab tab, android.support.v4.app.FragmentTransaction fragmentTransaction) { } @Override public void onTabReselected(ActionBar.Tab tab, android.support.v4.app.FragmentTransaction fragmentTransaction) { } }; pager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(int pos) { ActionBar b = getSupportActionBar(); try { b.setSelectedNavigationItem(pos); View action_bar_view = findViewById(getResources().getIdentifier("action_bar", "id", "android")); Class<?> action_bar_class = action_bar_view.getClass(); Field tab_scroll_view_prop = action_bar_class.getDeclaredField("mTabScrollView"); tab_scroll_view_prop.setAccessible(true); Object tab_scroll_view = tab_scroll_view_prop.get(action_bar_view); if (tab_scroll_view == null) return; Field spinner_prop = tab_scroll_view.getClass().getDeclaredField("mTabSpinner"); spinner_prop.setAccessible(true); Object tab_spinner = spinner_prop.get(tab_scroll_view); if (tab_spinner == null) return; Method set_selection_method = tab_spinner.getClass().getSuperclass().getDeclaredMethod("setSelection", Integer.TYPE, Boolean.TYPE); set_selection_method.invoke(tab_spinner, pos, true); } catch (Exception e) { e.printStackTrace(); } } }); for (int i = 0; i < adapter.getCount(); i++) { actionBar.addTab( actionBar.newTab() .setText(adapter.getPageTitle(i)) .setTabListener(tabListener)); } setResult(RESULT_CANCELED); } public class PagerAdapter extends FragmentPagerAdapter { public PagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int i) { switch (i) { case 0: return new AppsFragment(); case 1: return new QuickLaunchFragment(); case 2: return new ControlFragment(); case 3: return new PhoneFragment(); case 4: return new NotificationFragment(); case 5: return new StartFragment(); case 6: return new HelpFragment(); } return null; } @Override public int getCount() { return 7; } @Override public CharSequence getPageTitle(int position) { switch (position) { case 0: return getString(R.string.apps); case 1: return getString(R.string.quick_launch); case 2: return getString(R.string.control); case 3: return getString(R.string.phone); case 4: return getString(R.string.notification); case 5: return getString(R.string.start); case 6: return getString(R.string.help); } return null; } } }