diff --git a/app/src/main/java/com/todoroo/astrid/activity/MainActivity.java b/app/src/main/java/com/todoroo/astrid/activity/MainActivity.java index 05c634343..aa6236cf1 100644 --- a/app/src/main/java/com/todoroo/astrid/activity/MainActivity.java +++ b/app/src/main/java/com/todoroo/astrid/activity/MainActivity.java @@ -48,6 +48,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; import io.reactivex.schedulers.Schedulers; import javax.inject.Inject; +import org.jetbrains.annotations.Nullable; import org.tasks.LocalBroadcastManager; import org.tasks.R; import org.tasks.activities.TagSettingsActivity; @@ -137,10 +138,6 @@ public class MainActivity extends InjectingAppCompatActivity protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - if (savedInstanceState != null) { - filter = savedInstanceState.getParcelable(EXTRA_FILTER); - } - TaskListViewModel viewModel = ViewModelProviders.of(this).get(TaskListViewModel.class); getComponent().inject(viewModel); @@ -151,6 +148,11 @@ public class MainActivity extends InjectingAppCompatActivity ButterKnife.bind(this); + if (savedInstanceState != null) { + filter = savedInstanceState.getParcelable(EXTRA_FILTER); + applyTheme(); + } + navigationDrawer = getNavigationDrawerFragment(); navigationDrawer.setUp(drawerLayout); @@ -181,27 +183,19 @@ public class MainActivity extends InjectingAppCompatActivity if (intent.hasExtra(OPEN_FILTER)) { filter = intent.getParcelableExtra(OPEN_FILTER); intent.removeExtra(OPEN_FILTER); - return Single.fromCallable(() -> newTaskListFragment(filter)) - .observeOn(AndroidSchedulers.mainThread()) - .doOnSuccess(this::openTaskListFragment); + return Single.fromCallable(() -> newTaskListFragment(filter)); } else if (intent.hasExtra(LOAD_FILTER)) { String filter = intent.getStringExtra(LOAD_FILTER); intent.removeExtra(LOAD_FILTER); return Single.fromCallable( - () -> newTaskListFragment(defaultFilterProvider.getFilterFromPreference(filter))) - .observeOn(AndroidSchedulers.mainThread()) - .doOnSuccess(this::openTaskListFragment); + () -> newTaskListFragment(defaultFilterProvider.getFilterFromPreference(filter))); } TaskListFragment taskListFragment = getTaskListFragment(); if (taskListFragment == null || taskListFragment.filter != filter) { - return Single.fromCallable(() -> newTaskListFragment(filter)) - .observeOn(AndroidSchedulers.mainThread()) - .doOnSuccess(this::openTaskListFragment); + return Single.fromCallable(() -> newTaskListFragment(filter)); } else { - return Single.just(taskListFragment) - .observeOn(AndroidSchedulers.mainThread()) - .doOnSuccess(this::openTaskListFragment); + return Single.just(taskListFragment); } } @@ -224,7 +218,11 @@ public class MainActivity extends InjectingAppCompatActivity finishActionMode(); navigationDrawer.closeDrawer(); - Single single = taskListFragmentSingle(intent).subscribeOn(Schedulers.io()); + Single single = + taskListFragmentSingle(intent) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .doAfterSuccess(this::openTaskListFragment); if (intent.hasExtra(OPEN_TASK)) { long taskId = intent.getLongExtra(OPEN_TASK, 0); @@ -293,6 +291,7 @@ public class MainActivity extends InjectingAppCompatActivity .beginTransaction() .replace(R.id.master, taskListFragment, FRAG_TAG_TASK_LIST) .commit(); + fragmentManager.executePendingTransactions(); } } @@ -387,7 +386,7 @@ public class MainActivity extends InjectingAppCompatActivity } } - private TaskListFragment newTaskListFragment(Filter filter) { + private TaskListFragment newTaskListFragment(@Nullable Filter filter) { assertNotMainThread(); if (filter == null) { diff --git a/app/src/main/java/org/tasks/preferences/DefaultFilterProvider.java b/app/src/main/java/org/tasks/preferences/DefaultFilterProvider.java index 330c61061..a32226a5b 100644 --- a/app/src/main/java/org/tasks/preferences/DefaultFilterProvider.java +++ b/app/src/main/java/org/tasks/preferences/DefaultFilterProvider.java @@ -89,7 +89,7 @@ public class DefaultFilterProvider { return getFilterFromPreference(R.string.p_default_list); } - public void setDefaultFilter(Filter filter) { + void setDefaultFilter(Filter filter) { tracker.reportEvent(Tracking.Events.SET_DEFAULT_LIST); setFilterPreference(filter, R.string.p_default_list); }