diff --git a/astrid/src/com/todoroo/astrid/activity/AstridActivity.java b/astrid/src/com/todoroo/astrid/activity/AstridActivity.java index 979db5662..5c4f43667 100644 --- a/astrid/src/com/todoroo/astrid/activity/AstridActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/AstridActivity.java @@ -1,5 +1,7 @@ package com.todoroo.astrid.activity; +import java.lang.reflect.Constructor; + import android.app.PendingIntent.CanceledException; import android.content.BroadcastReceiver; import android.content.Context; @@ -166,7 +168,7 @@ public class AstridActivity extends FragmentActivity setIntent(intent); - setupTasklistFragmentWithFilter(filter); + setupTasklistFragmentWithFilter(filter, (Bundle) intent.getExtras().clone()); // no animation for dualpane-layout AndroidUtilities.callOverridePendingTransition(this, 0, 0); @@ -197,11 +199,11 @@ public class AstridActivity extends FragmentActivity transaction.commit(); } - protected final void setupTasklistFragmentWithFilter(Filter filter) { - setupTasklistFragmentWithFilterAndCustomTaskList(filter, TaskListFragment.class); + protected final void setupTasklistFragmentWithFilter(Filter filter, Bundle extras) { + setupTasklistFragmentWithFilterAndCustomTaskList(filter, extras, TaskListFragment.class); } - protected final void setupTasklistFragmentWithFilterAndCustomTaskList(Filter filter, Class customTaskList) { + protected final void setupTasklistFragmentWithFilterAndCustomTaskList(Filter filter, Bundle extras, Class customTaskList) { Class component = customTaskList; if (filter instanceof FilterWithCustomIntent) { try { @@ -214,7 +216,8 @@ public class AstridActivity extends FragmentActivity FragmentTransaction transaction = manager.beginTransaction(); try { - TaskListFragment newFragment = (TaskListFragment) component.newInstance(); + Constructor constructor = component.getConstructor(Bundle.class); + TaskListFragment newFragment = (TaskListFragment) constructor.newInstance(extras); transaction.replace(R.id.tasklist_fragment_container, newFragment, TaskListFragment.TAG_TASKLIST_FRAGMENT); transaction.commit(); diff --git a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java index 860aa29c7..436375efa 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java @@ -147,10 +147,11 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener commentsButton.setOnClickListener(commentsButtonClickListener); Filter savedFilter = getIntent().getParcelableExtra(TaskListFragment.TOKEN_FILTER); + Bundle extras = (Bundle) getIntent().getExtras().clone(); if (getIntent().getIntExtra(TOKEN_SOURCE, Constants.SOURCE_DEFAULT) == Constants.SOURCE_NOTIFICATION) - setupTasklistFragmentWithFilterAndCustomTaskList(savedFilter, NotificationFragment.class); + setupTasklistFragmentWithFilterAndCustomTaskList(savedFilter, extras, NotificationFragment.class); else - setupTasklistFragmentWithFilter(savedFilter); + setupTasklistFragmentWithFilter(savedFilter, extras); if (savedFilter != null) setListsTitle(savedFilter.title); diff --git a/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java b/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java index a00e5b24b..ee9a79437 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java @@ -193,6 +193,10 @@ public class TaskListFragment extends ListFragment implements OnScrollListener, AstridDependencyInjector.initialize(); } + private TaskListFragment() { + this(null); + } + public TaskListFragment(Bundle extras) { super(); this.extras = extras;