/* A simple Activity for the Search screen * Sets up the PageAdapter for the Search screen. * Most of the work seen in the Search screen is actually the fragments, * not this class. This class is just a simple parent Activity for the fragments. */ package com.databases.example.features.search; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.os.Parcelable; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.view.MenuInflater; import android.view.View; import com.databases.example.R; import com.databases.example.app.BaseActivity; import com.databases.example.features.checkbook.accounts.AccountsFragment; import com.databases.example.features.checkbook.transactions.TransactionsFragment; import com.databases.example.utils.Constants; import java.util.ArrayList; public class SearchActivity extends BaseActivity { public static final String BOOLEAN_SEARCH_KEY = "boolSearch"; public static final String QUERY_KEY = "query"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); handleIntent(getIntent()); } @Override public void onNewIntent(Intent intent) { setIntent(intent); handleIntent(intent); } private void handleIntent(Intent intent) { String query = intent.getStringExtra(QUERY_KEY); setTitle("Search <" + query + ">"); makeView(); } //Method that handles setting up the Tabs private void makeView() { setContentView(R.layout.search); ViewPager mViewPager = (ViewPager) findViewById(R.id.search_pager); mViewPager.setOffscreenPageLimit(2); MyPagerAdapter mTabsAdapter = new MyPagerAdapter(this, mViewPager); mTabsAdapter.addTab(AccountsFragment.class, null); mTabsAdapter.addTab(TransactionsFragment.class, null); mTabsAdapter.notifyDataSetChanged(); } @Override public Constants.ActivityTag setDrawerTag() { return Constants.ActivityTag.SEARCH; } public static class MyPagerAdapter extends FragmentStatePagerAdapter implements ViewPager.OnPageChangeListener { private final Context mContext; private final ViewPager mPager; private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>(); static final class TabInfo { private final Class<?> clss; private final Bundle args; TabInfo(Class<?> _class, Bundle _args) { clss = _class; args = _args; } } public MyPagerAdapter(AppCompatActivity activity, ViewPager pager) { super(activity.getSupportFragmentManager()); mContext = activity; mPager = pager; mPager.setAdapter(this); mPager.setOnPageChangeListener(this); } public void addTab(Class<?> clss, Bundle args) { TabInfo info = new TabInfo(clss, args); mTabs.add(info); notifyDataSetChanged(); } //Removes tab at certain position (zero-based) public void removeTab(ViewPager pager, int position, MyPagerAdapter adapter) { mTabs.remove(position); adapter.notifyDataSetChanged(); } public int getCount() { //One for Account tab, One for TransactionsFragment tab //return 2; return mTabs.size(); } @Override public void destroyItem(View arg0, int arg1, Object arg2) { ((ViewPager) arg0).removeView((View) arg2); } @Override public Parcelable saveState() { return null; } @Override public CharSequence getPageTitle(int position) { switch (position) { case 0: return "AccountsFragment"; case 1: return "TransactionsFragment"; default: return "Unknown Page!"; } } @Override public void onPageScrollStateChanged(int arg0) { // TODO Auto-generated method stub } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { // TODO Auto-generated method stub } @Override public void onPageSelected(int arg0) { // TODO Auto-generated method stub } @Override public Fragment getItem(int position) { TabInfo info = mTabs.get(position); return Fragment.instantiate(mContext, info.clss.getName(), info.args); } //Allows for multiple pages @Override public float getPageWidth(int position) { //To have two pages, return .5 return (1f); } } //For Menu @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.search_menu, menu); //SearchWidget searchWidget = new SearchWidget(this, menu.findItem(R.id.search_menu_search).getActionView()); return true; } }