ComboViewActivity.java revision 2d963a2899afbe000d1ab498f94de87f25e33184
1d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck/* 2d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck * Copyright (C) 2011 The Android Open Source Project 3d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck * 4d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck * Licensed under the Apache License, Version 2.0 (the "License"); 5d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck * you may not use this file except in compliance with the License. 6d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck * You may obtain a copy of the License at 7d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck * 8d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck * http://www.apache.org/licenses/LICENSE-2.0 9d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck * 10d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck * Unless required by applicable law or agreed to in writing, software 11d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck * distributed under the License is distributed on an "AS IS" BASIS, 12d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck * See the License for the specific language governing permissions and 14d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck * limitations under the License. 15d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck */ 16d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reckpackage com.android.browser; 17d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck 182d963a2899afbe000d1ab498f94de87f25e33184John Reckimport android.app.ActionBar; 19d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reckimport android.app.Activity; 202d963a2899afbe000d1ab498f94de87f25e33184John Reckimport android.app.Fragment; 212d963a2899afbe000d1ab498f94de87f25e33184John Reckimport android.app.FragmentTransaction; 222d963a2899afbe000d1ab498f94de87f25e33184John Reckimport android.content.Context; 23d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reckimport android.content.Intent; 24d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reckimport android.net.Uri; 25d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reckimport android.os.Bundle; 262d963a2899afbe000d1ab498f94de87f25e33184John Reckimport android.support.v13.app.FragmentPagerAdapter; 272d963a2899afbe000d1ab498f94de87f25e33184John Reckimport android.support.v4.view.ViewPager; 28d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reckimport android.view.Menu; 29d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reckimport android.view.MenuItem; 30d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck 31d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reckimport com.android.browser.UI.ComboViews; 32d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck 332d963a2899afbe000d1ab498f94de87f25e33184John Reckimport java.util.ArrayList; 342d963a2899afbe000d1ab498f94de87f25e33184John Reck 35d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reckpublic class ComboViewActivity extends Activity implements CombinedBookmarksCallbacks { 36d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck 372d963a2899afbe000d1ab498f94de87f25e33184John Reck private static final String STATE_SELECTED_TAB = "tab"; 38d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck public static final String EXTRA_COMBO_ARGS = "combo_args"; 39d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck public static final String EXTRA_INITIAL_VIEW = "initial_view"; 40d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck 41d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck public static final String EXTRA_OPEN_SNAPSHOT = "snapshot_id"; 42d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck public static final String EXTRA_OPEN_ALL = "open_all"; 43d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck public static final String EXTRA_CURRENT_URL = "url"; 44d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck public static final String EXTRA_BOOKMARK_PAGE = "create_bookmark"; 452d963a2899afbe000d1ab498f94de87f25e33184John Reck private ViewPager mViewPager; 462d963a2899afbe000d1ab498f94de87f25e33184John Reck private TabsAdapter mTabsAdapter; 47d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck 48d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck @Override 49d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck protected void onCreate(Bundle savedInstanceState) { 50d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck super.onCreate(savedInstanceState); 51d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck setResult(RESULT_CANCELED); 52d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck Bundle extras = getIntent().getExtras(); 53d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck Bundle args = extras.getBundle(EXTRA_COMBO_ARGS); 54d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck String svStr = extras.getString(EXTRA_INITIAL_VIEW, null); 55d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck ComboViews startingView = svStr != null 56d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck ? ComboViews.valueOf(svStr) 57d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck : ComboViews.Bookmarks; 582d963a2899afbe000d1ab498f94de87f25e33184John Reck mViewPager = new ViewPager(this); 592d963a2899afbe000d1ab498f94de87f25e33184John Reck mViewPager.setId(R.id.tab_view); 602d963a2899afbe000d1ab498f94de87f25e33184John Reck setContentView(mViewPager); 612d963a2899afbe000d1ab498f94de87f25e33184John Reck 622d963a2899afbe000d1ab498f94de87f25e33184John Reck final ActionBar bar = getActionBar(); 632d963a2899afbe000d1ab498f94de87f25e33184John Reck bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 642d963a2899afbe000d1ab498f94de87f25e33184John Reck if (BrowserActivity.isTablet(this)) { 652d963a2899afbe000d1ab498f94de87f25e33184John Reck bar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME 662d963a2899afbe000d1ab498f94de87f25e33184John Reck | ActionBar.DISPLAY_USE_LOGO); 672d963a2899afbe000d1ab498f94de87f25e33184John Reck } else { 682d963a2899afbe000d1ab498f94de87f25e33184John Reck bar.setDisplayOptions(0); 692d963a2899afbe000d1ab498f94de87f25e33184John Reck } 702d963a2899afbe000d1ab498f94de87f25e33184John Reck 712d963a2899afbe000d1ab498f94de87f25e33184John Reck mTabsAdapter = new TabsAdapter(this, mViewPager); 722d963a2899afbe000d1ab498f94de87f25e33184John Reck mTabsAdapter.addTab(bar.newTab().setText(R.string.tab_bookmarks), 732d963a2899afbe000d1ab498f94de87f25e33184John Reck BrowserBookmarksPage.class, args); 742d963a2899afbe000d1ab498f94de87f25e33184John Reck mTabsAdapter.addTab(bar.newTab().setText(R.string.tab_history), 752d963a2899afbe000d1ab498f94de87f25e33184John Reck BrowserHistoryPage.class, args); 762d963a2899afbe000d1ab498f94de87f25e33184John Reck mTabsAdapter.addTab(bar.newTab().setText(R.string.tab_snapshots), 772d963a2899afbe000d1ab498f94de87f25e33184John Reck BrowserSnapshotPage.class, args); 782d963a2899afbe000d1ab498f94de87f25e33184John Reck 792d963a2899afbe000d1ab498f94de87f25e33184John Reck if (savedInstanceState != null) { 802d963a2899afbe000d1ab498f94de87f25e33184John Reck bar.setSelectedNavigationItem( 812d963a2899afbe000d1ab498f94de87f25e33184John Reck savedInstanceState.getInt(STATE_SELECTED_TAB, 0)); 822d963a2899afbe000d1ab498f94de87f25e33184John Reck } else { 832d963a2899afbe000d1ab498f94de87f25e33184John Reck switch (startingView) { 842d963a2899afbe000d1ab498f94de87f25e33184John Reck case Bookmarks: 852d963a2899afbe000d1ab498f94de87f25e33184John Reck mViewPager.setCurrentItem(0); 862d963a2899afbe000d1ab498f94de87f25e33184John Reck break; 872d963a2899afbe000d1ab498f94de87f25e33184John Reck case History: 882d963a2899afbe000d1ab498f94de87f25e33184John Reck mViewPager.setCurrentItem(1); 892d963a2899afbe000d1ab498f94de87f25e33184John Reck break; 902d963a2899afbe000d1ab498f94de87f25e33184John Reck case Snapshots: 912d963a2899afbe000d1ab498f94de87f25e33184John Reck mViewPager.setCurrentItem(2); 922d963a2899afbe000d1ab498f94de87f25e33184John Reck break; 932d963a2899afbe000d1ab498f94de87f25e33184John Reck } 942d963a2899afbe000d1ab498f94de87f25e33184John Reck } 952d963a2899afbe000d1ab498f94de87f25e33184John Reck } 962d963a2899afbe000d1ab498f94de87f25e33184John Reck 972d963a2899afbe000d1ab498f94de87f25e33184John Reck @Override 982d963a2899afbe000d1ab498f94de87f25e33184John Reck protected void onSaveInstanceState(Bundle outState) { 992d963a2899afbe000d1ab498f94de87f25e33184John Reck super.onSaveInstanceState(outState); 1002d963a2899afbe000d1ab498f94de87f25e33184John Reck outState.putInt(STATE_SELECTED_TAB, 1012d963a2899afbe000d1ab498f94de87f25e33184John Reck getActionBar().getSelectedNavigationIndex()); 102d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck } 103d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck 104d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck @Override 105d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck public void openUrl(String url) { 106d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 107d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck setResult(RESULT_OK, i); 108d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck finish(); 109d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck } 110d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck 111d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck @Override 112d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck public void openInNewTab(String... urls) { 113d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck Intent i = new Intent(); 114d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck i.putExtra(EXTRA_OPEN_ALL, urls); 115d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck setResult(RESULT_OK, i); 116d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck finish(); 117d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck } 118d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck 119d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck @Override 120d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck public void close() { 121d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck finish(); 122d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck } 123d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck 124d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck @Override 125d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck public void openSnapshot(long id) { 126d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck Intent i = new Intent(); 127d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck i.putExtra(EXTRA_OPEN_SNAPSHOT, id); 128d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck setResult(RESULT_OK, i); 129d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck finish(); 130d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck } 131d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck 132d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck @Override 133d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck public boolean onCreateOptionsMenu(Menu menu) { 134d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck getMenuInflater().inflate(R.menu.combined, menu); 135d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck return super.onCreateOptionsMenu(menu); 136d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck } 137d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck 138d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck @Override 139d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck public boolean onOptionsItemSelected(MenuItem item) { 140d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck if (item.getItemId() == android.R.id.home) { 141d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck finish(); 142d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck return true; 143d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck } else if (item.getItemId() == R.id.preferences_menu_id) { 144d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck String url = getIntent().getStringExtra(EXTRA_CURRENT_URL); 145d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck Intent intent = new Intent(this, BrowserPreferencesPage.class); 146d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck intent.putExtra(BrowserPreferencesPage.CURRENT_PAGE, url); 147d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck startActivityForResult(intent, Controller.PREFERENCES_PAGE); 148d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck return true; 149d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck } 150d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck return super.onOptionsItemSelected(item); 151d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck } 1522d963a2899afbe000d1ab498f94de87f25e33184John Reck 1532d963a2899afbe000d1ab498f94de87f25e33184John Reck /** 1542d963a2899afbe000d1ab498f94de87f25e33184John Reck * This is a helper class that implements the management of tabs and all 1552d963a2899afbe000d1ab498f94de87f25e33184John Reck * details of connecting a ViewPager with associated TabHost. It relies on a 1562d963a2899afbe000d1ab498f94de87f25e33184John Reck * trick. Normally a tab host has a simple API for supplying a View or 1572d963a2899afbe000d1ab498f94de87f25e33184John Reck * Intent that each tab will show. This is not sufficient for switching 1582d963a2899afbe000d1ab498f94de87f25e33184John Reck * between pages. So instead we make the content part of the tab host 1592d963a2899afbe000d1ab498f94de87f25e33184John Reck * 0dp high (it is not shown) and the TabsAdapter supplies its own dummy 1602d963a2899afbe000d1ab498f94de87f25e33184John Reck * view to show as the tab content. It listens to changes in tabs, and takes 1612d963a2899afbe000d1ab498f94de87f25e33184John Reck * care of switch to the correct page in the ViewPager whenever the selected 1622d963a2899afbe000d1ab498f94de87f25e33184John Reck * tab changes. 1632d963a2899afbe000d1ab498f94de87f25e33184John Reck */ 1642d963a2899afbe000d1ab498f94de87f25e33184John Reck public static class TabsAdapter extends FragmentPagerAdapter 1652d963a2899afbe000d1ab498f94de87f25e33184John Reck implements ActionBar.TabListener, ViewPager.OnPageChangeListener { 1662d963a2899afbe000d1ab498f94de87f25e33184John Reck private final Context mContext; 1672d963a2899afbe000d1ab498f94de87f25e33184John Reck private final ActionBar mActionBar; 1682d963a2899afbe000d1ab498f94de87f25e33184John Reck private final ViewPager mViewPager; 1692d963a2899afbe000d1ab498f94de87f25e33184John Reck private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>(); 1702d963a2899afbe000d1ab498f94de87f25e33184John Reck 1712d963a2899afbe000d1ab498f94de87f25e33184John Reck static final class TabInfo { 1722d963a2899afbe000d1ab498f94de87f25e33184John Reck private final Class<?> clss; 1732d963a2899afbe000d1ab498f94de87f25e33184John Reck private final Bundle args; 1742d963a2899afbe000d1ab498f94de87f25e33184John Reck 1752d963a2899afbe000d1ab498f94de87f25e33184John Reck TabInfo(Class<?> _class, Bundle _args) { 1762d963a2899afbe000d1ab498f94de87f25e33184John Reck clss = _class; 1772d963a2899afbe000d1ab498f94de87f25e33184John Reck args = _args; 1782d963a2899afbe000d1ab498f94de87f25e33184John Reck } 1792d963a2899afbe000d1ab498f94de87f25e33184John Reck } 1802d963a2899afbe000d1ab498f94de87f25e33184John Reck 1812d963a2899afbe000d1ab498f94de87f25e33184John Reck public TabsAdapter(Activity activity, ViewPager pager) { 1822d963a2899afbe000d1ab498f94de87f25e33184John Reck super(activity.getFragmentManager()); 1832d963a2899afbe000d1ab498f94de87f25e33184John Reck mContext = activity; 1842d963a2899afbe000d1ab498f94de87f25e33184John Reck mActionBar = activity.getActionBar(); 1852d963a2899afbe000d1ab498f94de87f25e33184John Reck mViewPager = pager; 1862d963a2899afbe000d1ab498f94de87f25e33184John Reck mViewPager.setAdapter(this); 1872d963a2899afbe000d1ab498f94de87f25e33184John Reck mViewPager.setOnPageChangeListener(this); 1882d963a2899afbe000d1ab498f94de87f25e33184John Reck } 1892d963a2899afbe000d1ab498f94de87f25e33184John Reck 1902d963a2899afbe000d1ab498f94de87f25e33184John Reck public void addTab(ActionBar.Tab tab, Class<?> clss, Bundle args) { 1912d963a2899afbe000d1ab498f94de87f25e33184John Reck TabInfo info = new TabInfo(clss, args); 1922d963a2899afbe000d1ab498f94de87f25e33184John Reck tab.setTag(info); 1932d963a2899afbe000d1ab498f94de87f25e33184John Reck tab.setTabListener(this); 1942d963a2899afbe000d1ab498f94de87f25e33184John Reck mTabs.add(info); 1952d963a2899afbe000d1ab498f94de87f25e33184John Reck mActionBar.addTab(tab); 1962d963a2899afbe000d1ab498f94de87f25e33184John Reck notifyDataSetChanged(); 1972d963a2899afbe000d1ab498f94de87f25e33184John Reck } 1982d963a2899afbe000d1ab498f94de87f25e33184John Reck 1992d963a2899afbe000d1ab498f94de87f25e33184John Reck @Override 2002d963a2899afbe000d1ab498f94de87f25e33184John Reck public int getCount() { 2012d963a2899afbe000d1ab498f94de87f25e33184John Reck return mTabs.size(); 2022d963a2899afbe000d1ab498f94de87f25e33184John Reck } 2032d963a2899afbe000d1ab498f94de87f25e33184John Reck 2042d963a2899afbe000d1ab498f94de87f25e33184John Reck @Override 2052d963a2899afbe000d1ab498f94de87f25e33184John Reck public Fragment getItem(int position) { 2062d963a2899afbe000d1ab498f94de87f25e33184John Reck TabInfo info = mTabs.get(position); 2072d963a2899afbe000d1ab498f94de87f25e33184John Reck return Fragment.instantiate(mContext, info.clss.getName(), info.args); 2082d963a2899afbe000d1ab498f94de87f25e33184John Reck } 2092d963a2899afbe000d1ab498f94de87f25e33184John Reck 2102d963a2899afbe000d1ab498f94de87f25e33184John Reck @Override 2112d963a2899afbe000d1ab498f94de87f25e33184John Reck public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 2122d963a2899afbe000d1ab498f94de87f25e33184John Reck } 2132d963a2899afbe000d1ab498f94de87f25e33184John Reck 2142d963a2899afbe000d1ab498f94de87f25e33184John Reck @Override 2152d963a2899afbe000d1ab498f94de87f25e33184John Reck public void onPageSelected(int position) { 2162d963a2899afbe000d1ab498f94de87f25e33184John Reck mActionBar.setSelectedNavigationItem(position); 2172d963a2899afbe000d1ab498f94de87f25e33184John Reck } 2182d963a2899afbe000d1ab498f94de87f25e33184John Reck 2192d963a2899afbe000d1ab498f94de87f25e33184John Reck @Override 2202d963a2899afbe000d1ab498f94de87f25e33184John Reck public void onPageScrollStateChanged(int state) { 2212d963a2899afbe000d1ab498f94de87f25e33184John Reck } 2222d963a2899afbe000d1ab498f94de87f25e33184John Reck 2232d963a2899afbe000d1ab498f94de87f25e33184John Reck @Override 2242d963a2899afbe000d1ab498f94de87f25e33184John Reck public void onTabSelected(android.app.ActionBar.Tab tab, 2252d963a2899afbe000d1ab498f94de87f25e33184John Reck FragmentTransaction ft) { 2262d963a2899afbe000d1ab498f94de87f25e33184John Reck Object tag = tab.getTag(); 2272d963a2899afbe000d1ab498f94de87f25e33184John Reck for (int i=0; i<mTabs.size(); i++) { 2282d963a2899afbe000d1ab498f94de87f25e33184John Reck if (mTabs.get(i) == tag) { 2292d963a2899afbe000d1ab498f94de87f25e33184John Reck mViewPager.setCurrentItem(i); 2302d963a2899afbe000d1ab498f94de87f25e33184John Reck } 2312d963a2899afbe000d1ab498f94de87f25e33184John Reck } 2322d963a2899afbe000d1ab498f94de87f25e33184John Reck } 2332d963a2899afbe000d1ab498f94de87f25e33184John Reck 2342d963a2899afbe000d1ab498f94de87f25e33184John Reck @Override 2352d963a2899afbe000d1ab498f94de87f25e33184John Reck public void onTabUnselected(android.app.ActionBar.Tab tab, 2362d963a2899afbe000d1ab498f94de87f25e33184John Reck FragmentTransaction ft) { 2372d963a2899afbe000d1ab498f94de87f25e33184John Reck } 2382d963a2899afbe000d1ab498f94de87f25e33184John Reck 2392d963a2899afbe000d1ab498f94de87f25e33184John Reck @Override 2402d963a2899afbe000d1ab498f94de87f25e33184John Reck public void onTabReselected(android.app.ActionBar.Tab tab, 2412d963a2899afbe000d1ab498f94de87f25e33184John Reck FragmentTransaction ft) { 2422d963a2899afbe000d1ab498f94de87f25e33184John Reck } 2432d963a2899afbe000d1ab498f94de87f25e33184John Reck } 2442d963a2899afbe000d1ab498f94de87f25e33184John Reck 2452d963a2899afbe000d1ab498f94de87f25e33184John Reck private static String makeFragmentName(int viewId, int index) { 2462d963a2899afbe000d1ab498f94de87f25e33184John Reck return "android:switcher:" + viewId + ":" + index; 2472d963a2899afbe000d1ab498f94de87f25e33184John Reck } 2482d963a2899afbe000d1ab498f94de87f25e33184John Reck 249d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck} 250