mirror of
https://github.com/AntennaPod/AntennaPod.git
synced 2025-12-01 12:31:45 +00:00
Fix back stack being cleared after searching (#7757)
This commit is contained in:
@ -99,7 +99,6 @@ public class MainActivity extends CastEnabledActivity {
|
|||||||
|
|
||||||
public static final String EXTRA_FEED_ID = "fragment_feed_id";
|
public static final String EXTRA_FEED_ID = "fragment_feed_id";
|
||||||
public static final String EXTRA_REFRESH_ON_START = "refresh_on_start";
|
public static final String EXTRA_REFRESH_ON_START = "refresh_on_start";
|
||||||
public static final String EXTRA_ADD_TO_BACK_STACK = "add_to_back_stack";
|
|
||||||
public static final String KEY_GENERATED_VIEW_ID = "generated_view_id";
|
public static final String KEY_GENERATED_VIEW_ID = "generated_view_id";
|
||||||
|
|
||||||
private @Nullable DrawerLayout drawerLayout;
|
private @Nullable DrawerLayout drawerLayout;
|
||||||
@ -666,11 +665,10 @@ public class MainActivity extends CastEnabledActivity {
|
|||||||
long feedId = intent.getLongExtra(EXTRA_FEED_ID, 0);
|
long feedId = intent.getLongExtra(EXTRA_FEED_ID, 0);
|
||||||
Bundle args = intent.getBundleExtra(MainActivityStarter.EXTRA_FRAGMENT_ARGS);
|
Bundle args = intent.getBundleExtra(MainActivityStarter.EXTRA_FRAGMENT_ARGS);
|
||||||
if (feedId > 0) {
|
if (feedId > 0) {
|
||||||
boolean addToBackStack = intent.getBooleanExtra(EXTRA_ADD_TO_BACK_STACK, false);
|
if (intent.getBooleanExtra(MainActivityStarter.EXTRA_CLEAR_BACK_STACK, false)) {
|
||||||
if (addToBackStack) {
|
|
||||||
loadChildFragment(FeedItemlistFragment.newInstance(feedId));
|
|
||||||
} else {
|
|
||||||
loadFeedFragmentById(feedId, args);
|
loadFeedFragmentById(feedId, args);
|
||||||
|
} else {
|
||||||
|
loadChildFragment(FeedItemlistFragment.newInstance(feedId));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
|
sheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
|
||||||
@ -678,10 +676,10 @@ public class MainActivity extends CastEnabledActivity {
|
|||||||
String tag = intent.getStringExtra(MainActivityStarter.EXTRA_FRAGMENT_TAG);
|
String tag = intent.getStringExtra(MainActivityStarter.EXTRA_FRAGMENT_TAG);
|
||||||
Bundle args = intent.getBundleExtra(MainActivityStarter.EXTRA_FRAGMENT_ARGS);
|
Bundle args = intent.getBundleExtra(MainActivityStarter.EXTRA_FRAGMENT_ARGS);
|
||||||
if (tag != null) {
|
if (tag != null) {
|
||||||
if (intent.getBooleanExtra(MainActivityStarter.EXTRA_ADD_TO_BACK_STACK, false)) {
|
if (intent.getBooleanExtra(MainActivityStarter.EXTRA_CLEAR_BACK_STACK, false)) {
|
||||||
loadChildFragment(createFragmentInstance(tag, args));
|
|
||||||
} else {
|
|
||||||
loadFragment(tag, null);
|
loadFragment(tag, null);
|
||||||
|
} else {
|
||||||
|
loadChildFragment(createFragmentInstance(tag, args));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
|
sheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
|
||||||
|
|||||||
@ -385,6 +385,7 @@ public class NavDrawerFragment extends Fragment implements SharedPreferences.OnS
|
|||||||
if (UserPreferences.getHiddenDrawerItems().contains(getLastNavFragment(getContext()))) {
|
if (UserPreferences.getHiddenDrawerItems().contains(getLastNavFragment(getContext()))) {
|
||||||
new MainActivityStarter(getContext())
|
new MainActivityStarter(getContext())
|
||||||
.withFragmentLoaded(UserPreferences.getDefaultPage())
|
.withFragmentLoaded(UserPreferences.getDefaultPage())
|
||||||
|
.withClearBackStack()
|
||||||
.withDrawerOpen()
|
.withDrawerOpen()
|
||||||
.start();
|
.start();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -254,6 +254,7 @@ public class FeedInfoFragment extends Fragment implements MaterialToolbar.OnMenu
|
|||||||
DBWriter.setFeedState(getContext(), feed, Feed.STATE_SUBSCRIBED);
|
DBWriter.setFeedState(getContext(), feed, Feed.STATE_SUBSCRIBED);
|
||||||
MainActivityStarter mainActivityStarter = new MainActivityStarter(getContext());
|
MainActivityStarter mainActivityStarter = new MainActivityStarter(getContext());
|
||||||
mainActivityStarter.withOpenFeed(feed.getId());
|
mainActivityStarter.withOpenFeed(feed.getId());
|
||||||
|
mainActivityStarter.withClearBackStack();
|
||||||
getActivity().finish();
|
getActivity().finish();
|
||||||
startActivity(mainActivityStarter.getIntent());
|
startActivity(mainActivityStarter.getIntent());
|
||||||
});
|
});
|
||||||
|
|||||||
@ -59,7 +59,6 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import static de.danoeh.antennapod.ui.appstartintent.OnlineFeedviewActivityStarter.ARG_FEEDURL;
|
import static de.danoeh.antennapod.ui.appstartintent.OnlineFeedviewActivityStarter.ARG_FEEDURL;
|
||||||
import static de.danoeh.antennapod.ui.appstartintent.OnlineFeedviewActivityStarter.ARG_STARTED_FROM_SEARCH;
|
|
||||||
import static de.danoeh.antennapod.ui.appstartintent.OnlineFeedviewActivityStarter.ARG_WAS_MANUAL_URL;
|
import static de.danoeh.antennapod.ui.appstartintent.OnlineFeedviewActivityStarter.ARG_WAS_MANUAL_URL;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -358,9 +357,6 @@ public class OnlineFeedViewActivity extends AppCompatActivity {
|
|||||||
// feed.getId() is always 0, we have to retrieve the id from the feed list from the database
|
// feed.getId() is always 0, we have to retrieve the id from the feed list from the database
|
||||||
MainActivityStarter mainActivityStarter = new MainActivityStarter(this);
|
MainActivityStarter mainActivityStarter = new MainActivityStarter(this);
|
||||||
mainActivityStarter.withOpenFeed(feedId);
|
mainActivityStarter.withOpenFeed(feedId);
|
||||||
if (getIntent().getBooleanExtra(ARG_STARTED_FROM_SEARCH, false)) {
|
|
||||||
mainActivityStarter.withAddToBackStack();
|
|
||||||
}
|
|
||||||
finish();
|
finish();
|
||||||
startActivity(mainActivityStarter.getIntent());
|
startActivity(mainActivityStarter.getIntent());
|
||||||
}
|
}
|
||||||
|
|||||||
@ -211,7 +211,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
|
|||||||
if (showVideoPlayer) {
|
if (showVideoPlayer) {
|
||||||
return new VideoPlayerActivityStarter(context).getIntent();
|
return new VideoPlayerActivityStarter(context).getIntent();
|
||||||
} else {
|
} else {
|
||||||
return new MainActivityStarter(context).withOpenPlayer().getIntent();
|
return new MainActivityStarter(context).withClearBackStack().withOpenPlayer().getIntent();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -223,7 +223,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
|
|||||||
if (media.getMediaType() == MediaType.VIDEO && !isCasting) {
|
if (media.getMediaType() == MediaType.VIDEO && !isCasting) {
|
||||||
return new VideoPlayerActivityStarter(context).getIntent();
|
return new VideoPlayerActivityStarter(context).getIntent();
|
||||||
} else {
|
} else {
|
||||||
return new MainActivityStarter(context).withOpenPlayer().getIntent();
|
return new MainActivityStarter(context).withClearBackStack().withOpenPlayer().getIntent();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -14,7 +14,7 @@ public class MainActivityStarter {
|
|||||||
public static final String INTENT = "de.danoeh.antennapod.intents.MAIN_ACTIVITY";
|
public static final String INTENT = "de.danoeh.antennapod.intents.MAIN_ACTIVITY";
|
||||||
public static final String EXTRA_OPEN_PLAYER = "open_player";
|
public static final String EXTRA_OPEN_PLAYER = "open_player";
|
||||||
public static final String EXTRA_FEED_ID = "fragment_feed_id";
|
public static final String EXTRA_FEED_ID = "fragment_feed_id";
|
||||||
public static final String EXTRA_ADD_TO_BACK_STACK = "add_to_back_stack";
|
public static final String EXTRA_CLEAR_BACK_STACK = "clear_back_stack";
|
||||||
public static final String EXTRA_FRAGMENT_TAG = "fragment_tag";
|
public static final String EXTRA_FRAGMENT_TAG = "fragment_tag";
|
||||||
public static final String EXTRA_OPEN_DRAWER = "open_drawer";
|
public static final String EXTRA_OPEN_DRAWER = "open_drawer";
|
||||||
public static final String EXTRA_OPEN_DOWNLOAD_LOGS = "open_download_logs";
|
public static final String EXTRA_OPEN_DOWNLOAD_LOGS = "open_download_logs";
|
||||||
@ -56,8 +56,8 @@ public class MainActivityStarter {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public MainActivityStarter withAddToBackStack() {
|
public MainActivityStarter withClearBackStack() {
|
||||||
intent.putExtra(EXTRA_ADD_TO_BACK_STACK, true);
|
intent.putExtra(EXTRA_CLEAR_BACK_STACK, true);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -7,7 +7,6 @@ public class OnlineFeedviewActivityStarter {
|
|||||||
public static final String INTENT = "de.danoeh.antennapod.intents.ONLINE_FEEDVIEW";
|
public static final String INTENT = "de.danoeh.antennapod.intents.ONLINE_FEEDVIEW";
|
||||||
public static final String ARG_FEEDURL = "arg.feedurl";
|
public static final String ARG_FEEDURL = "arg.feedurl";
|
||||||
public static final String ARG_WAS_MANUAL_URL = "manual_url";
|
public static final String ARG_WAS_MANUAL_URL = "manual_url";
|
||||||
public static final String ARG_STARTED_FROM_SEARCH = "started_from_search";
|
|
||||||
private final Intent intent;
|
private final Intent intent;
|
||||||
|
|
||||||
public OnlineFeedviewActivityStarter(Context context, String feedUrl) {
|
public OnlineFeedviewActivityStarter(Context context, String feedUrl) {
|
||||||
@ -16,11 +15,6 @@ public class OnlineFeedviewActivityStarter {
|
|||||||
intent.putExtra(ARG_FEEDURL, feedUrl);
|
intent.putExtra(ARG_FEEDURL, feedUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
public OnlineFeedviewActivityStarter withStartedFromSearch() {
|
|
||||||
intent.putExtra(ARG_STARTED_FROM_SEARCH, true);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public OnlineFeedviewActivityStarter withManualUrl() {
|
public OnlineFeedviewActivityStarter withManualUrl() {
|
||||||
intent.putExtra(ARG_WAS_MANUAL_URL, true);
|
intent.putExtra(ARG_WAS_MANUAL_URL, true);
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@ -97,8 +97,7 @@ public class OnlineSearchFragment extends Fragment {
|
|||||||
//Show information about the podcast when the list item is clicked
|
//Show information about the podcast when the list item is clicked
|
||||||
gridView.setOnItemClickListener((parent, view1, position, id) -> {
|
gridView.setOnItemClickListener((parent, view1, position, id) -> {
|
||||||
PodcastSearchResult podcast = searchResults.get(position);
|
PodcastSearchResult podcast = searchResults.get(position);
|
||||||
startActivity(new OnlineFeedviewActivityStarter(getContext(), podcast.feedUrl)
|
startActivity(new OnlineFeedviewActivityStarter(getContext(), podcast.feedUrl).getIntent());
|
||||||
.withStartedFromSearch().getIntent());
|
|
||||||
});
|
});
|
||||||
progressBar = root.findViewById(R.id.progressBar);
|
progressBar = root.findViewById(R.id.progressBar);
|
||||||
txtvError = root.findViewById(R.id.txtvError);
|
txtvError = root.findViewById(R.id.txtvError);
|
||||||
|
|||||||
@ -47,7 +47,6 @@ public class QuickFeedDiscoveryFragment extends Fragment implements AdapterView.
|
|||||||
viewBinding = QuickFeedDiscoveryBinding.inflate(inflater);
|
viewBinding = QuickFeedDiscoveryBinding.inflate(inflater);
|
||||||
viewBinding.discoverMore.setOnClickListener(v -> startActivity(new MainActivityStarter(getContext())
|
viewBinding.discoverMore.setOnClickListener(v -> startActivity(new MainActivityStarter(getContext())
|
||||||
.withFragmentLoaded(DiscoveryFragment.TAG)
|
.withFragmentLoaded(DiscoveryFragment.TAG)
|
||||||
.withAddToBackStack()
|
|
||||||
.getIntent()));
|
.getIntent()));
|
||||||
|
|
||||||
adapter = new FeedDiscoverAdapter(getActivity());
|
adapter = new FeedDiscoverAdapter(getActivity());
|
||||||
|
|||||||
@ -31,7 +31,7 @@ public class FeedStatisticsDialogFragment extends DialogFragment {
|
|||||||
dialog.setPositiveButton(android.R.string.ok, null);
|
dialog.setPositiveButton(android.R.string.ok, null);
|
||||||
dialog.setNeutralButton(R.string.open_podcast, (dialogInterface, i) -> {
|
dialog.setNeutralButton(R.string.open_podcast, (dialogInterface, i) -> {
|
||||||
long feedId = getArguments().getLong(EXTRA_FEED_ID);
|
long feedId = getArguments().getLong(EXTRA_FEED_ID);
|
||||||
new MainActivityStarter(getContext()).withOpenFeed(feedId).withAddToBackStack().start();
|
new MainActivityStarter(getContext()).withOpenFeed(feedId).start();
|
||||||
});
|
});
|
||||||
dialog.setTitle(getArguments().getString(EXTRA_FEED_TITLE));
|
dialog.setTitle(getArguments().getString(EXTRA_FEED_TITLE));
|
||||||
dialog.setView(R.layout.feed_statistics_dialog);
|
dialog.setView(R.layout.feed_statistics_dialog);
|
||||||
|
|||||||
@ -69,7 +69,8 @@ public abstract class WidgetUpdater {
|
|||||||
if (widgetState.media != null && widgetState.media.getMediaType() == MediaType.VIDEO) {
|
if (widgetState.media != null && widgetState.media.getMediaType() == MediaType.VIDEO) {
|
||||||
startMediaPlayer = new VideoPlayerActivityStarter(context).getPendingIntent();
|
startMediaPlayer = new VideoPlayerActivityStarter(context).getPendingIntent();
|
||||||
} else {
|
} else {
|
||||||
startMediaPlayer = new MainActivityStarter(context).withOpenPlayer().getPendingIntent();
|
startMediaPlayer = new MainActivityStarter(context)
|
||||||
|
.withOpenPlayer().withClearBackStack().getPendingIntent();
|
||||||
}
|
}
|
||||||
|
|
||||||
PendingIntent startPlaybackSpeedDialog = new PlaybackSpeedActivityStarter(context).getPendingIntent();
|
PendingIntent startPlaybackSpeedDialog = new PlaybackSpeedActivityStarter(context).getPendingIntent();
|
||||||
|
|||||||
Reference in New Issue
Block a user