Check if fragment is attached to activity on API callbacks, to prevent crashes.

This commit is contained in:
Synced Synapse 2015-01-22 22:19:28 +00:00
parent 7a4352f221
commit c7d822e68a
10 changed files with 79 additions and 51 deletions

View File

@ -155,16 +155,16 @@ public class AddonDetailsFragment extends Fragment {
action.execute(hostManager.getConnection(), new ApiCallback<AddonType.Details>() { action.execute(hostManager.getConnection(), new ApiCallback<AddonType.Details>() {
@Override @Override
public void onSucess(AddonType.Details result) { public void onSucess(AddonType.Details result) {
if (!isAdded()) return;
displayAddonDetails(result); displayAddonDetails(result);
} }
@Override @Override
public void onError(int errorCode, String description) { public void onError(int errorCode, String description) {
if (isAdded()) { if (!isAdded()) return;
Toast.makeText(getActivity(), Toast.makeText(getActivity(),
String.format(getString(R.string.error_getting_addon_info), description), String.format(getString(R.string.error_getting_addon_info), description),
Toast.LENGTH_SHORT).show(); Toast.LENGTH_SHORT).show();
}
} }
}, callbackHandler); }, callbackHandler);
} }
@ -199,6 +199,7 @@ public class AddonDetailsFragment extends Fragment {
@Override @Override
public void onError(int errorCode, String description) { public void onError(int errorCode, String description) {
if (!isAdded()) return;
// Got an error, show toast // Got an error, show toast
Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT) Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT)
.show(); .show();
@ -213,21 +214,19 @@ public class AddonDetailsFragment extends Fragment {
action.execute(hostManager.getConnection(), new ApiCallback<String>() { action.execute(hostManager.getConnection(), new ApiCallback<String>() {
@Override @Override
public void onSucess(String result) { public void onSucess(String result) {
if (isAdded()) { if (!isAdded()) return;
int messageResId = (!isEnabled) ? R.string.addon_enabled : R.string.addon_disabled; int messageResId = (!isEnabled) ? R.string.addon_enabled : R.string.addon_disabled;
Toast.makeText(getActivity(), messageResId, Toast.LENGTH_SHORT).show(); Toast.makeText(getActivity(), messageResId, Toast.LENGTH_SHORT).show();
setupEnableButton(!isEnabled); setupEnableButton(!isEnabled);
}
} }
@Override @Override
public void onError(int errorCode, String description) { public void onError(int errorCode, String description) {
if (isAdded()) { if (!isAdded()) return;
Toast.makeText(getActivity(), Toast.makeText(getActivity(),
String.format(getString(R.string.general_error_executing_action), description), String.format(getString(R.string.general_error_executing_action), description),
Toast.LENGTH_SHORT) Toast.LENGTH_SHORT)
.show(); .show();
}
} }
}, callbackHandler); }, callbackHandler);
} }

View File

@ -183,6 +183,8 @@ public class AddonListFragment extends Fragment
action.execute(hostManager.getConnection(), new ApiCallback<List<AddonType.Details>>() { action.execute(hostManager.getConnection(), new ApiCallback<List<AddonType.Details>>() {
@Override @Override
public void onSucess(List<AddonType.Details> result) { public void onSucess(List<AddonType.Details> result) {
if (!isAdded()) return;
adapter.clear(); adapter.clear();
for (AddonType.Details addon : result) { for (AddonType.Details addon : result) {
if (addon.type.equals(AddonType.Types.UNKNOWN) || if (addon.type.equals(AddonType.Types.UNKNOWN) ||
@ -203,14 +205,14 @@ public class AddonListFragment extends Fragment
@Override @Override
public void onError(int errorCode, String description) { public void onError(int errorCode, String description) {
if (isAdded()) { if (!isAdded()) return;
// To prevent the empty text from appearing on the first load, set it now
emptyView.setText(getString(R.string.no_addons_found_refresh)); // To prevent the empty text from appearing on the first load, set it now
Toast.makeText(getActivity(), emptyView.setText(getString(R.string.no_addons_found_refresh));
String.format(getString(R.string.error_getting_addon_info), description), Toast.makeText(getActivity(),
Toast.LENGTH_SHORT).show(); String.format(getString(R.string.error_getting_addon_info), description),
swipeRefreshLayout.setRefreshing(false); Toast.LENGTH_SHORT).show();
} swipeRefreshLayout.setRefreshing(false);
} }
}, callbackHandler); }, callbackHandler);
} }

View File

@ -263,6 +263,7 @@ public class AlbumDetailsFragment extends Fragment
action.execute(hostManager.getConnection(), new ApiCallback<String>() { action.execute(hostManager.getConnection(), new ApiCallback<String>() {
@Override @Override
public void onSucess(String result) { public void onSucess(String result) {
if (!isAdded()) return;
// Check whether we should switch to the remote // Check whether we should switch to the remote
boolean switchToRemote = PreferenceManager boolean switchToRemote = PreferenceManager
.getDefaultSharedPreferences(getActivity()) .getDefaultSharedPreferences(getActivity())
@ -277,6 +278,7 @@ public class AlbumDetailsFragment extends Fragment
@Override @Override
public void onError(int errorCode, String description) { public void onError(int errorCode, String description) {
if (!isAdded()) return;
// Got an error, show toast // Got an error, show toast
Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT) Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT)
.show(); .show();
@ -464,6 +466,7 @@ public class AlbumDetailsFragment extends Fragment
getPlaylists.execute(hostManager.getConnection(), new ApiCallback<ArrayList<PlaylistType.GetPlaylistsReturnType>>() { getPlaylists.execute(hostManager.getConnection(), new ApiCallback<ArrayList<PlaylistType.GetPlaylistsReturnType>>() {
@Override @Override
public void onSucess(ArrayList<PlaylistType.GetPlaylistsReturnType> result) { public void onSucess(ArrayList<PlaylistType.GetPlaylistsReturnType> result) {
if (!isAdded()) return;
// Ok, loop through the playlists, looking for the audio one // Ok, loop through the playlists, looking for the audio one
int audioPlaylistId = -1; int audioPlaylistId = -1;
for (PlaylistType.GetPlaylistsReturnType playlist : result) { for (PlaylistType.GetPlaylistsReturnType playlist : result) {
@ -484,6 +487,7 @@ public class AlbumDetailsFragment extends Fragment
action.execute(hostManager.getConnection(), new ApiCallback<String>() { action.execute(hostManager.getConnection(), new ApiCallback<String>() {
@Override @Override
public void onSucess(String result) { public void onSucess(String result) {
if (!isAdded()) return;
// Got an error, show toast // Got an error, show toast
Toast.makeText(getActivity(), R.string.item_added_to_playlist, Toast.LENGTH_SHORT) Toast.makeText(getActivity(), R.string.item_added_to_playlist, Toast.LENGTH_SHORT)
.show(); .show();
@ -491,6 +495,7 @@ public class AlbumDetailsFragment extends Fragment
@Override @Override
public void onError(int errorCode, String description) { public void onError(int errorCode, String description) {
if (!isAdded()) return;
// Got an error, show toast // Got an error, show toast
Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT) Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT)
.show(); .show();
@ -504,6 +509,7 @@ public class AlbumDetailsFragment extends Fragment
@Override @Override
public void onError(int errorCode, String description) { public void onError(int errorCode, String description) {
if (!isAdded()) return;
// Got an error, show toast // Got an error, show toast
Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT) Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT)
.show(); .show();

View File

@ -341,6 +341,7 @@ public class MovieDetailsFragment extends Fragment
action.execute(hostManager.getConnection(), new ApiCallback<String>() { action.execute(hostManager.getConnection(), new ApiCallback<String>() {
@Override @Override
public void onSucess(String result) { public void onSucess(String result) {
if (!isAdded()) return;
// Check whether we should switch to the remote // Check whether we should switch to the remote
boolean switchToRemote = PreferenceManager boolean switchToRemote = PreferenceManager
.getDefaultSharedPreferences(getActivity()) .getDefaultSharedPreferences(getActivity())
@ -355,6 +356,7 @@ public class MovieDetailsFragment extends Fragment
@Override @Override
public void onError(int errorCode, String description) { public void onError(int errorCode, String description) {
if (!isAdded()) return;
// Got an error, show toast // Got an error, show toast
Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT) Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT)
.show(); .show();
@ -369,6 +371,7 @@ public class MovieDetailsFragment extends Fragment
getPlaylists.execute(hostManager.getConnection(), new ApiCallback<ArrayList<PlaylistType.GetPlaylistsReturnType>>() { getPlaylists.execute(hostManager.getConnection(), new ApiCallback<ArrayList<PlaylistType.GetPlaylistsReturnType>>() {
@Override @Override
public void onSucess(ArrayList<PlaylistType.GetPlaylistsReturnType> result) { public void onSucess(ArrayList<PlaylistType.GetPlaylistsReturnType> result) {
if (!isAdded()) return;
// Ok, loop through the playlists, looking for the video one // Ok, loop through the playlists, looking for the video one
int videoPlaylistId = -1; int videoPlaylistId = -1;
for (PlaylistType.GetPlaylistsReturnType playlist : result) { for (PlaylistType.GetPlaylistsReturnType playlist : result) {
@ -385,6 +388,7 @@ public class MovieDetailsFragment extends Fragment
action.execute(hostManager.getConnection(), new ApiCallback<String>() { action.execute(hostManager.getConnection(), new ApiCallback<String>() {
@Override @Override
public void onSucess(String result) { public void onSucess(String result) {
if (!isAdded()) return;
// Got an error, show toast // Got an error, show toast
Toast.makeText(getActivity(), R.string.item_added_to_playlist, Toast.LENGTH_SHORT) Toast.makeText(getActivity(), R.string.item_added_to_playlist, Toast.LENGTH_SHORT)
.show(); .show();
@ -392,6 +396,7 @@ public class MovieDetailsFragment extends Fragment
@Override @Override
public void onError(int errorCode, String description) { public void onError(int errorCode, String description) {
if (!isAdded()) return;
// Got an error, show toast // Got an error, show toast
Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT) Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT)
.show(); .show();
@ -405,6 +410,7 @@ public class MovieDetailsFragment extends Fragment
@Override @Override
public void onError(int errorCode, String description) { public void onError(int errorCode, String description) {
if (!isAdded()) return;
// Got an error, show toast // Got an error, show toast
Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT) Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT)
.show(); .show();
@ -432,9 +438,9 @@ public class MovieDetailsFragment extends Fragment
action.execute(hostManager.getConnection(), new ApiCallback<String>() { action.execute(hostManager.getConnection(), new ApiCallback<String>() {
@Override @Override
public void onSucess(String result) { public void onSucess(String result) {
if (!isAdded()) return;
// Force a refresh, but don't show a message // Force a refresh, but don't show a message
if (isAdded()) startSync(true);
startSync(true);
} }
@Override @Override

View File

@ -300,6 +300,7 @@ public class MusicVideoDetailsFragment extends Fragment
action.execute(hostManager.getConnection(), new ApiCallback<String>() { action.execute(hostManager.getConnection(), new ApiCallback<String>() {
@Override @Override
public void onSucess(String result) { public void onSucess(String result) {
if (!isAdded()) return;
// Check whether we should switch to the remote // Check whether we should switch to the remote
boolean switchToRemote = PreferenceManager boolean switchToRemote = PreferenceManager
.getDefaultSharedPreferences(getActivity()) .getDefaultSharedPreferences(getActivity())
@ -314,6 +315,7 @@ public class MusicVideoDetailsFragment extends Fragment
@Override @Override
public void onError(int errorCode, String description) { public void onError(int errorCode, String description) {
if (!isAdded()) return;
// Got an error, show toast // Got an error, show toast
Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT) Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT)
.show(); .show();
@ -328,6 +330,7 @@ public class MusicVideoDetailsFragment extends Fragment
getPlaylists.execute(hostManager.getConnection(), new ApiCallback<ArrayList<PlaylistType.GetPlaylistsReturnType>>() { getPlaylists.execute(hostManager.getConnection(), new ApiCallback<ArrayList<PlaylistType.GetPlaylistsReturnType>>() {
@Override @Override
public void onSucess(ArrayList<PlaylistType.GetPlaylistsReturnType> result) { public void onSucess(ArrayList<PlaylistType.GetPlaylistsReturnType> result) {
if (!isAdded()) return;
// Ok, loop through the playlists, looking for the video one // Ok, loop through the playlists, looking for the video one
int videoPlaylistId = -1; int videoPlaylistId = -1;
for (PlaylistType.GetPlaylistsReturnType playlist : result) { for (PlaylistType.GetPlaylistsReturnType playlist : result) {
@ -344,37 +347,32 @@ public class MusicVideoDetailsFragment extends Fragment
action.execute(hostManager.getConnection(), new ApiCallback<String>() { action.execute(hostManager.getConnection(), new ApiCallback<String>() {
@Override @Override
public void onSucess(String result) { public void onSucess(String result) {
if (isAdded()) { if (!isAdded()) return;
// Got an error, show toast // Got an error, show toast
Toast.makeText(getActivity(), R.string.item_added_to_playlist, Toast.LENGTH_SHORT) Toast.makeText(getActivity(), R.string.item_added_to_playlist, Toast.LENGTH_SHORT)
.show(); .show();
}
} }
@Override @Override
public void onError(int errorCode, String description) { public void onError(int errorCode, String description) {
if (isAdded()) { if (!isAdded()) return;
// Got an error, show toast // Got an error, show toast
Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT) Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT)
.show(); .show();
}
} }
}, callbackHandler); }, callbackHandler);
} else { } else {
if (isAdded()) { Toast.makeText(getActivity(), R.string.no_suitable_playlist, Toast.LENGTH_SHORT)
Toast.makeText(getActivity(), R.string.no_suitable_playlist, Toast.LENGTH_SHORT) .show();
.show();
}
} }
} }
@Override @Override
public void onError(int errorCode, String description) { public void onError(int errorCode, String description) {
if (isAdded()) { if (!isAdded()) return;
// Got an error, show toast // Got an error, show toast
Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT) Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT)
.show(); .show();
}
} }
}, callbackHandler); }, callbackHandler);
} }

View File

@ -245,6 +245,7 @@ public class NowPlayingFragment extends Fragment
private ApiCallback<Integer> defaultPlaySpeedChangedCallback = new ApiCallback<Integer>() { private ApiCallback<Integer> defaultPlaySpeedChangedCallback = new ApiCallback<Integer>() {
@Override @Override
public void onSucess(Integer result) { public void onSucess(Integer result) {
if (!isAdded()) return;
UIUtils.setPlayPauseButtonIcon(getActivity(), playButton, result); UIUtils.setPlayPauseButtonIcon(getActivity(), playButton, result);
} }
@ -311,6 +312,7 @@ public class NowPlayingFragment extends Fragment
action.execute(hostManager.getConnection(), new ApiCallback<Boolean>() { action.execute(hostManager.getConnection(), new ApiCallback<Boolean>() {
@Override @Override
public void onSucess(Boolean result) { public void onSucess(Boolean result) {
if (!isAdded()) return;
if (result) { if (result) {
Resources.Theme theme = getActivity().getTheme(); Resources.Theme theme = getActivity().getTheme();
TypedArray styledAttributes = theme.obtainStyledAttributes(new int[] { TypedArray styledAttributes = theme.obtainStyledAttributes(new int[] {
@ -324,9 +326,7 @@ public class NowPlayingFragment extends Fragment
} }
@Override @Override
public void onError(int errorCode, String description) { public void onError(int errorCode, String description) { }
}
}, callbackHandler); }, callbackHandler);
} }
@ -336,6 +336,7 @@ public class NowPlayingFragment extends Fragment
action.execute(hostManager.getConnection(), new ApiCallback<String>() { action.execute(hostManager.getConnection(), new ApiCallback<String>() {
@Override @Override
public void onSucess(String result) { public void onSucess(String result) {
if (!isAdded()) return;
// Force a refresh // Force a refresh
hostConnectionObserver.forceRefreshResults(); hostConnectionObserver.forceRefreshResults();
} }
@ -351,6 +352,7 @@ public class NowPlayingFragment extends Fragment
action.execute(hostManager.getConnection(), new ApiCallback<String>() { action.execute(hostManager.getConnection(), new ApiCallback<String>() {
@Override @Override
public void onSucess(String result) { public void onSucess(String result) {
if (!isAdded()) return;
hostConnectionObserver.forceRefreshResults(); hostConnectionObserver.forceRefreshResults();
} }
@ -445,6 +447,7 @@ public class NowPlayingFragment extends Fragment
getProperties.execute(hostManager.getConnection(), new ApiCallback<ApplicationType.PropertyValue>() { getProperties.execute(hostManager.getConnection(), new ApiCallback<ApplicationType.PropertyValue>() {
@Override @Override
public void onSucess(ApplicationType.PropertyValue result) { public void onSucess(ApplicationType.PropertyValue result) {
if (!isAdded()) return;
// Ok, we've got a version, decide which method to call // Ok, we've got a version, decide which method to call
if (result.version.major < 13) { if (result.version.major < 13) {
showDownloadSubtitlesPreGotham(); showDownloadSubtitlesPreGotham();
@ -455,6 +458,7 @@ public class NowPlayingFragment extends Fragment
@Override @Override
public void onError(int errorCode, String description) { public void onError(int errorCode, String description) {
if (!isAdded()) return;
// Something went wrong // Something went wrong
Toast.makeText(getActivity(), Toast.makeText(getActivity(),
String.format(getString(R.string.error_getting_properties), description), String.format(getString(R.string.error_getting_properties), description),
@ -481,12 +485,14 @@ public class NowPlayingFragment extends Fragment
action.execute(hostManager.getConnection(), new ApiCallback<String>() { action.execute(hostManager.getConnection(), new ApiCallback<String>() {
@Override @Override
public void onSucess(String result) { public void onSucess(String result) {
if (!isAdded()) return;
// Notify enclosing activity to switch panels // Notify enclosing activity to switch panels
nowPlayingListener.SwitchToRemotePanel(); nowPlayingListener.SwitchToRemotePanel();
} }
@Override @Override
public void onError(int errorCode, String description) { public void onError(int errorCode, String description) {
if (!isAdded()) return;
Toast.makeText(getActivity(), Toast.makeText(getActivity(),
String.format(getString(R.string.error_executing_subtitles), description), String.format(getString(R.string.error_executing_subtitles), description),
Toast.LENGTH_SHORT).show(); Toast.LENGTH_SHORT).show();

View File

@ -382,11 +382,13 @@ public class PlaylistFragment extends Fragment
getPlaylists.execute(hostManager.getConnection(), new ApiCallback<ArrayList<PlaylistType.GetPlaylistsReturnType>>() { getPlaylists.execute(hostManager.getConnection(), new ApiCallback<ArrayList<PlaylistType.GetPlaylistsReturnType>>() {
@Override @Override
public void onSucess(ArrayList<PlaylistType.GetPlaylistsReturnType> result) { public void onSucess(ArrayList<PlaylistType.GetPlaylistsReturnType> result) {
if (!isAdded()) return;
getPlaylistItems(getActivePlayerResult, getItemResult, result); getPlaylistItems(getActivePlayerResult, getItemResult, result);
} }
@Override @Override
public void onError(int errorCode, String description) { public void onError(int errorCode, String description) {
if (!isAdded()) return;
// Oops // Oops
displayErrorGettingPlaylistMessage(description); displayErrorGettingPlaylistMessage(description);
} }
@ -434,6 +436,7 @@ public class PlaylistFragment extends Fragment
getItems.execute(hostManager.getConnection(), new ApiCallback<List<ListType.ItemsAll>>() { getItems.execute(hostManager.getConnection(), new ApiCallback<List<ListType.ItemsAll>>() {
@Override @Override
public void onSucess(List<ListType.ItemsAll> result) { public void onSucess(List<ListType.ItemsAll> result) {
if (!isAdded()) return;
// Ok, we've got all the info, save and display playlist // Ok, we've got all the info, save and display playlist
lastGetPlaylistItemsResult = result; lastGetPlaylistItemsResult = result;
displayPlaylist(getItemResult, result); displayPlaylist(getItemResult, result);
@ -441,6 +444,7 @@ public class PlaylistFragment extends Fragment
@Override @Override
public void onError(int errorCode, String description) { public void onError(int errorCode, String description) {
if (!isAdded()) return;
// Oops // Oops
displayErrorGettingPlaylistMessage(description); displayErrorGettingPlaylistMessage(description);
} }

View File

@ -270,6 +270,7 @@ public class RemoteFragment extends Fragment
private ApiCallback<Integer> defaultPlaySpeedChangedCallback = new ApiCallback<Integer>() { private ApiCallback<Integer> defaultPlaySpeedChangedCallback = new ApiCallback<Integer>() {
@Override @Override
public void onSucess(Integer result) { public void onSucess(Integer result) {
if (!isAdded()) return;
UIUtils.setPlayPauseButtonIcon(getActivity(), playButton, result); UIUtils.setPlayPauseButtonIcon(getActivity(), playButton, result);
} }

View File

@ -228,7 +228,7 @@ public class SettingsFragment extends PreferenceFragment
// update UI accordingly // update UI accordingly
mSettings.hasBoughtCoffee = hasUpgrade; mSettings.hasBoughtCoffee = hasUpgrade;
setupPreferences(mSettings.hasBoughtCoffee); if (isAdded()) setupPreferences(mSettings.hasBoughtCoffee);
mSettings.save(); mSettings.save();
} }
}); });

View File

@ -334,6 +334,7 @@ public class TVShowEpisodeDetailsFragment extends Fragment
action.execute(hostManager.getConnection(), new ApiCallback<String>() { action.execute(hostManager.getConnection(), new ApiCallback<String>() {
@Override @Override
public void onSucess(String result) { public void onSucess(String result) {
if (!isAdded()) return;
// Check whether we should switch to the remote // Check whether we should switch to the remote
boolean switchToRemote = PreferenceManager boolean switchToRemote = PreferenceManager
.getDefaultSharedPreferences(getActivity()) .getDefaultSharedPreferences(getActivity())
@ -348,6 +349,7 @@ public class TVShowEpisodeDetailsFragment extends Fragment
@Override @Override
public void onError(int errorCode, String description) { public void onError(int errorCode, String description) {
if (!isAdded()) return;
// Got an error, show toast // Got an error, show toast
Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT) Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT)
.show(); .show();
@ -362,6 +364,7 @@ public class TVShowEpisodeDetailsFragment extends Fragment
getPlaylists.execute(hostManager.getConnection(), new ApiCallback<ArrayList<PlaylistType.GetPlaylistsReturnType>>() { getPlaylists.execute(hostManager.getConnection(), new ApiCallback<ArrayList<PlaylistType.GetPlaylistsReturnType>>() {
@Override @Override
public void onSucess(ArrayList<PlaylistType.GetPlaylistsReturnType> result) { public void onSucess(ArrayList<PlaylistType.GetPlaylistsReturnType> result) {
if (!isAdded()) return;
// Ok, loop through the playlists, looking for the video one // Ok, loop through the playlists, looking for the video one
int videoPlaylistId = -1; int videoPlaylistId = -1;
for (PlaylistType.GetPlaylistsReturnType playlist : result) { for (PlaylistType.GetPlaylistsReturnType playlist : result) {
@ -378,6 +381,7 @@ public class TVShowEpisodeDetailsFragment extends Fragment
action.execute(hostManager.getConnection(), new ApiCallback<String>() { action.execute(hostManager.getConnection(), new ApiCallback<String>() {
@Override @Override
public void onSucess(String result) { public void onSucess(String result) {
if (!isAdded()) return;
// Got an error, show toast // Got an error, show toast
Toast.makeText(getActivity(), R.string.item_added_to_playlist, Toast.LENGTH_SHORT) Toast.makeText(getActivity(), R.string.item_added_to_playlist, Toast.LENGTH_SHORT)
.show(); .show();
@ -385,12 +389,14 @@ public class TVShowEpisodeDetailsFragment extends Fragment
@Override @Override
public void onError(int errorCode, String description) { public void onError(int errorCode, String description) {
if (!isAdded()) return;
// Got an error, show toast // Got an error, show toast
Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT) Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT)
.show(); .show();
} }
}, callbackHandler); }, callbackHandler);
} else { } else {
if (!isAdded()) return;
Toast.makeText(getActivity(), R.string.no_suitable_playlist, Toast.LENGTH_SHORT) Toast.makeText(getActivity(), R.string.no_suitable_playlist, Toast.LENGTH_SHORT)
.show(); .show();
} }
@ -417,8 +423,8 @@ public class TVShowEpisodeDetailsFragment extends Fragment
@Override @Override
public void onSucess(String result) { public void onSucess(String result) {
// Force a refresh, but don't show a message // Force a refresh, but don't show a message
if (isAdded()) if (!isAdded()) return;
startSync(true); startSync(true);
} }
@Override @Override