diff --git a/astrid/src/com/todoroo/astrid/activity/AstridActivity.java b/astrid/src/com/todoroo/astrid/activity/AstridActivity.java index 937d5abb8..7f0b18f5d 100644 --- a/astrid/src/com/todoroo/astrid/activity/AstridActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/AstridActivity.java @@ -156,19 +156,7 @@ public class AstridActivity extends FragmentActivity if(item instanceof Filter) { Filter filter = (Filter)item; - if(filter instanceof FilterWithCustomIntent) { - int lastSelectedList = intent.getIntExtra(FilterListFragment.TOKEN_LAST_SELECTED, 0); - intent = ((FilterWithCustomIntent)filter).getCustomIntent(); - intent.putExtra(FilterListFragment.TOKEN_LAST_SELECTED, lastSelectedList); - } else { - intent.putExtra(TaskListFragment.TOKEN_FILTER, filter); - } - - setIntent(intent); - - Bundle extras = intent.getExtras(); - if (extras != null) - extras = (Bundle) extras.clone(); + Bundle extras = configureIntentAndExtrasWithFilter(intent, filter); setupTasklistFragmentWithFilter(filter, extras); // no animation for dualpane-layout @@ -186,6 +174,23 @@ public class AstridActivity extends FragmentActivity } } + protected Bundle configureIntentAndExtrasWithFilter(Intent intent, Filter filter) { + if(filter instanceof FilterWithCustomIntent) { + int lastSelectedList = intent.getIntExtra(FilterListFragment.TOKEN_LAST_SELECTED, 0); + intent = ((FilterWithCustomIntent)filter).getCustomIntent(); + intent.putExtra(FilterListFragment.TOKEN_LAST_SELECTED, lastSelectedList); + } else { + intent.putExtra(TaskListFragment.TOKEN_FILTER, filter); + } + + setIntent(intent); + + Bundle extras = intent.getExtras(); + if (extras != null) + extras = (Bundle) extras.clone(); + return extras; + } + public void setupActivityFragment(TagData tagData) { if (fragmentLayout == LAYOUT_SINGLE) return; diff --git a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java index 6af728607..a5699a01b 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java @@ -391,8 +391,10 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener @Override public void onPageSelected(int position) { - if (tlfPagerAdapter != null) + if (tlfPagerAdapter != null) { + configureIntentAndExtrasWithFilter(getIntent(), tlfPagerAdapter.getFilter(position)); setListsTitle(tlfPagerAdapter.getPageTitle(position).toString()); + } } @Override diff --git a/astrid/src/com/todoroo/astrid/adapter/TaskListFragmentPagerAdapter.java b/astrid/src/com/todoroo/astrid/adapter/TaskListFragmentPagerAdapter.java index 8e724369c..cab6150d6 100644 --- a/astrid/src/com/todoroo/astrid/adapter/TaskListFragmentPagerAdapter.java +++ b/astrid/src/com/todoroo/astrid/adapter/TaskListFragmentPagerAdapter.java @@ -39,6 +39,10 @@ public class TaskListFragmentPagerAdapter extends FragmentStatePagerAdapter impl return filterAdapter.addOrLookup(filter); } + public Filter getFilter(int position) { + return filterAdapter.getItem(position); + } + @Override public int getCount() { return filterAdapter.getCount();