Check if fragment is attached to activity on API callbacks, to prevent crashes.
This commit is contained in:
parent
7a4352f221
commit
c7d822e68a
|
@ -155,16 +155,16 @@ public class AddonDetailsFragment extends Fragment {
|
|||
action.execute(hostManager.getConnection(), new ApiCallback<AddonType.Details>() {
|
||||
@Override
|
||||
public void onSucess(AddonType.Details result) {
|
||||
if (!isAdded()) return;
|
||||
displayAddonDetails(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(int errorCode, String description) {
|
||||
if (isAdded()) {
|
||||
Toast.makeText(getActivity(),
|
||||
String.format(getString(R.string.error_getting_addon_info), description),
|
||||
Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
if (!isAdded()) return;
|
||||
Toast.makeText(getActivity(),
|
||||
String.format(getString(R.string.error_getting_addon_info), description),
|
||||
Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}, callbackHandler);
|
||||
}
|
||||
|
@ -199,6 +199,7 @@ public class AddonDetailsFragment extends Fragment {
|
|||
|
||||
@Override
|
||||
public void onError(int errorCode, String description) {
|
||||
if (!isAdded()) return;
|
||||
// Got an error, show toast
|
||||
Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
|
@ -213,21 +214,19 @@ public class AddonDetailsFragment extends Fragment {
|
|||
action.execute(hostManager.getConnection(), new ApiCallback<String>() {
|
||||
@Override
|
||||
public void onSucess(String result) {
|
||||
if (isAdded()) {
|
||||
int messageResId = (!isEnabled) ? R.string.addon_enabled : R.string.addon_disabled;
|
||||
Toast.makeText(getActivity(), messageResId, Toast.LENGTH_SHORT).show();
|
||||
setupEnableButton(!isEnabled);
|
||||
}
|
||||
if (!isAdded()) return;
|
||||
int messageResId = (!isEnabled) ? R.string.addon_enabled : R.string.addon_disabled;
|
||||
Toast.makeText(getActivity(), messageResId, Toast.LENGTH_SHORT).show();
|
||||
setupEnableButton(!isEnabled);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(int errorCode, String description) {
|
||||
if (isAdded()) {
|
||||
Toast.makeText(getActivity(),
|
||||
String.format(getString(R.string.general_error_executing_action), description),
|
||||
Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
}
|
||||
if (!isAdded()) return;
|
||||
Toast.makeText(getActivity(),
|
||||
String.format(getString(R.string.general_error_executing_action), description),
|
||||
Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
}
|
||||
}, callbackHandler);
|
||||
}
|
||||
|
|
|
@ -183,6 +183,8 @@ public class AddonListFragment extends Fragment
|
|||
action.execute(hostManager.getConnection(), new ApiCallback<List<AddonType.Details>>() {
|
||||
@Override
|
||||
public void onSucess(List<AddonType.Details> result) {
|
||||
if (!isAdded()) return;
|
||||
|
||||
adapter.clear();
|
||||
for (AddonType.Details addon : result) {
|
||||
if (addon.type.equals(AddonType.Types.UNKNOWN) ||
|
||||
|
@ -203,14 +205,14 @@ public class AddonListFragment extends Fragment
|
|||
|
||||
@Override
|
||||
public void onError(int errorCode, String description) {
|
||||
if (isAdded()) {
|
||||
// To prevent the empty text from appearing on the first load, set it now
|
||||
emptyView.setText(getString(R.string.no_addons_found_refresh));
|
||||
Toast.makeText(getActivity(),
|
||||
String.format(getString(R.string.error_getting_addon_info), description),
|
||||
Toast.LENGTH_SHORT).show();
|
||||
swipeRefreshLayout.setRefreshing(false);
|
||||
}
|
||||
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));
|
||||
Toast.makeText(getActivity(),
|
||||
String.format(getString(R.string.error_getting_addon_info), description),
|
||||
Toast.LENGTH_SHORT).show();
|
||||
swipeRefreshLayout.setRefreshing(false);
|
||||
}
|
||||
}, callbackHandler);
|
||||
}
|
||||
|
|
|
@ -263,6 +263,7 @@ public class AlbumDetailsFragment extends Fragment
|
|||
action.execute(hostManager.getConnection(), new ApiCallback<String>() {
|
||||
@Override
|
||||
public void onSucess(String result) {
|
||||
if (!isAdded()) return;
|
||||
// Check whether we should switch to the remote
|
||||
boolean switchToRemote = PreferenceManager
|
||||
.getDefaultSharedPreferences(getActivity())
|
||||
|
@ -277,6 +278,7 @@ public class AlbumDetailsFragment extends Fragment
|
|||
|
||||
@Override
|
||||
public void onError(int errorCode, String description) {
|
||||
if (!isAdded()) return;
|
||||
// Got an error, show toast
|
||||
Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
|
@ -464,6 +466,7 @@ public class AlbumDetailsFragment extends Fragment
|
|||
getPlaylists.execute(hostManager.getConnection(), new ApiCallback<ArrayList<PlaylistType.GetPlaylistsReturnType>>() {
|
||||
@Override
|
||||
public void onSucess(ArrayList<PlaylistType.GetPlaylistsReturnType> result) {
|
||||
if (!isAdded()) return;
|
||||
// Ok, loop through the playlists, looking for the audio one
|
||||
int audioPlaylistId = -1;
|
||||
for (PlaylistType.GetPlaylistsReturnType playlist : result) {
|
||||
|
@ -484,6 +487,7 @@ public class AlbumDetailsFragment extends Fragment
|
|||
action.execute(hostManager.getConnection(), new ApiCallback<String>() {
|
||||
@Override
|
||||
public void onSucess(String result) {
|
||||
if (!isAdded()) return;
|
||||
// Got an error, show toast
|
||||
Toast.makeText(getActivity(), R.string.item_added_to_playlist, Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
|
@ -491,6 +495,7 @@ public class AlbumDetailsFragment extends Fragment
|
|||
|
||||
@Override
|
||||
public void onError(int errorCode, String description) {
|
||||
if (!isAdded()) return;
|
||||
// Got an error, show toast
|
||||
Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
|
@ -504,6 +509,7 @@ public class AlbumDetailsFragment extends Fragment
|
|||
|
||||
@Override
|
||||
public void onError(int errorCode, String description) {
|
||||
if (!isAdded()) return;
|
||||
// Got an error, show toast
|
||||
Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
|
|
|
@ -341,6 +341,7 @@ public class MovieDetailsFragment extends Fragment
|
|||
action.execute(hostManager.getConnection(), new ApiCallback<String>() {
|
||||
@Override
|
||||
public void onSucess(String result) {
|
||||
if (!isAdded()) return;
|
||||
// Check whether we should switch to the remote
|
||||
boolean switchToRemote = PreferenceManager
|
||||
.getDefaultSharedPreferences(getActivity())
|
||||
|
@ -355,6 +356,7 @@ public class MovieDetailsFragment extends Fragment
|
|||
|
||||
@Override
|
||||
public void onError(int errorCode, String description) {
|
||||
if (!isAdded()) return;
|
||||
// Got an error, show toast
|
||||
Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
|
@ -369,6 +371,7 @@ public class MovieDetailsFragment extends Fragment
|
|||
getPlaylists.execute(hostManager.getConnection(), new ApiCallback<ArrayList<PlaylistType.GetPlaylistsReturnType>>() {
|
||||
@Override
|
||||
public void onSucess(ArrayList<PlaylistType.GetPlaylistsReturnType> result) {
|
||||
if (!isAdded()) return;
|
||||
// Ok, loop through the playlists, looking for the video one
|
||||
int videoPlaylistId = -1;
|
||||
for (PlaylistType.GetPlaylistsReturnType playlist : result) {
|
||||
|
@ -385,6 +388,7 @@ public class MovieDetailsFragment extends Fragment
|
|||
action.execute(hostManager.getConnection(), new ApiCallback<String>() {
|
||||
@Override
|
||||
public void onSucess(String result) {
|
||||
if (!isAdded()) return;
|
||||
// Got an error, show toast
|
||||
Toast.makeText(getActivity(), R.string.item_added_to_playlist, Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
|
@ -392,6 +396,7 @@ public class MovieDetailsFragment extends Fragment
|
|||
|
||||
@Override
|
||||
public void onError(int errorCode, String description) {
|
||||
if (!isAdded()) return;
|
||||
// Got an error, show toast
|
||||
Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
|
@ -405,6 +410,7 @@ public class MovieDetailsFragment extends Fragment
|
|||
|
||||
@Override
|
||||
public void onError(int errorCode, String description) {
|
||||
if (!isAdded()) return;
|
||||
// Got an error, show toast
|
||||
Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
|
@ -432,9 +438,9 @@ public class MovieDetailsFragment extends Fragment
|
|||
action.execute(hostManager.getConnection(), new ApiCallback<String>() {
|
||||
@Override
|
||||
public void onSucess(String result) {
|
||||
if (!isAdded()) return;
|
||||
// Force a refresh, but don't show a message
|
||||
if (isAdded())
|
||||
startSync(true);
|
||||
startSync(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -300,6 +300,7 @@ public class MusicVideoDetailsFragment extends Fragment
|
|||
action.execute(hostManager.getConnection(), new ApiCallback<String>() {
|
||||
@Override
|
||||
public void onSucess(String result) {
|
||||
if (!isAdded()) return;
|
||||
// Check whether we should switch to the remote
|
||||
boolean switchToRemote = PreferenceManager
|
||||
.getDefaultSharedPreferences(getActivity())
|
||||
|
@ -314,6 +315,7 @@ public class MusicVideoDetailsFragment extends Fragment
|
|||
|
||||
@Override
|
||||
public void onError(int errorCode, String description) {
|
||||
if (!isAdded()) return;
|
||||
// Got an error, show toast
|
||||
Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
|
@ -328,6 +330,7 @@ public class MusicVideoDetailsFragment extends Fragment
|
|||
getPlaylists.execute(hostManager.getConnection(), new ApiCallback<ArrayList<PlaylistType.GetPlaylistsReturnType>>() {
|
||||
@Override
|
||||
public void onSucess(ArrayList<PlaylistType.GetPlaylistsReturnType> result) {
|
||||
if (!isAdded()) return;
|
||||
// Ok, loop through the playlists, looking for the video one
|
||||
int videoPlaylistId = -1;
|
||||
for (PlaylistType.GetPlaylistsReturnType playlist : result) {
|
||||
|
@ -344,37 +347,32 @@ public class MusicVideoDetailsFragment extends Fragment
|
|||
action.execute(hostManager.getConnection(), new ApiCallback<String>() {
|
||||
@Override
|
||||
public void onSucess(String result) {
|
||||
if (isAdded()) {
|
||||
// Got an error, show toast
|
||||
Toast.makeText(getActivity(), R.string.item_added_to_playlist, Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
}
|
||||
if (!isAdded()) return;
|
||||
// Got an error, show toast
|
||||
Toast.makeText(getActivity(), R.string.item_added_to_playlist, Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(int errorCode, String description) {
|
||||
if (isAdded()) {
|
||||
// Got an error, show toast
|
||||
Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
}
|
||||
if (!isAdded()) return;
|
||||
// Got an error, show toast
|
||||
Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
}
|
||||
}, callbackHandler);
|
||||
} else {
|
||||
if (isAdded()) {
|
||||
Toast.makeText(getActivity(), R.string.no_suitable_playlist, Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
}
|
||||
Toast.makeText(getActivity(), R.string.no_suitable_playlist, Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(int errorCode, String description) {
|
||||
if (isAdded()) {
|
||||
// Got an error, show toast
|
||||
Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
}
|
||||
if (!isAdded()) return;
|
||||
// Got an error, show toast
|
||||
Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
}
|
||||
}, callbackHandler);
|
||||
}
|
||||
|
|
|
@ -245,6 +245,7 @@ public class NowPlayingFragment extends Fragment
|
|||
private ApiCallback<Integer> defaultPlaySpeedChangedCallback = new ApiCallback<Integer>() {
|
||||
@Override
|
||||
public void onSucess(Integer result) {
|
||||
if (!isAdded()) return;
|
||||
UIUtils.setPlayPauseButtonIcon(getActivity(), playButton, result);
|
||||
}
|
||||
|
||||
|
@ -311,6 +312,7 @@ public class NowPlayingFragment extends Fragment
|
|||
action.execute(hostManager.getConnection(), new ApiCallback<Boolean>() {
|
||||
@Override
|
||||
public void onSucess(Boolean result) {
|
||||
if (!isAdded()) return;
|
||||
if (result) {
|
||||
Resources.Theme theme = getActivity().getTheme();
|
||||
TypedArray styledAttributes = theme.obtainStyledAttributes(new int[] {
|
||||
|
@ -324,9 +326,7 @@ public class NowPlayingFragment extends Fragment
|
|||
}
|
||||
|
||||
@Override
|
||||
public void onError(int errorCode, String description) {
|
||||
|
||||
}
|
||||
public void onError(int errorCode, String description) { }
|
||||
}, callbackHandler);
|
||||
}
|
||||
|
||||
|
@ -336,6 +336,7 @@ public class NowPlayingFragment extends Fragment
|
|||
action.execute(hostManager.getConnection(), new ApiCallback<String>() {
|
||||
@Override
|
||||
public void onSucess(String result) {
|
||||
if (!isAdded()) return;
|
||||
// Force a refresh
|
||||
hostConnectionObserver.forceRefreshResults();
|
||||
}
|
||||
|
@ -351,6 +352,7 @@ public class NowPlayingFragment extends Fragment
|
|||
action.execute(hostManager.getConnection(), new ApiCallback<String>() {
|
||||
@Override
|
||||
public void onSucess(String result) {
|
||||
if (!isAdded()) return;
|
||||
hostConnectionObserver.forceRefreshResults();
|
||||
}
|
||||
|
||||
|
@ -445,6 +447,7 @@ public class NowPlayingFragment extends Fragment
|
|||
getProperties.execute(hostManager.getConnection(), new ApiCallback<ApplicationType.PropertyValue>() {
|
||||
@Override
|
||||
public void onSucess(ApplicationType.PropertyValue result) {
|
||||
if (!isAdded()) return;
|
||||
// Ok, we've got a version, decide which method to call
|
||||
if (result.version.major < 13) {
|
||||
showDownloadSubtitlesPreGotham();
|
||||
|
@ -455,6 +458,7 @@ public class NowPlayingFragment extends Fragment
|
|||
|
||||
@Override
|
||||
public void onError(int errorCode, String description) {
|
||||
if (!isAdded()) return;
|
||||
// Something went wrong
|
||||
Toast.makeText(getActivity(),
|
||||
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>() {
|
||||
@Override
|
||||
public void onSucess(String result) {
|
||||
if (!isAdded()) return;
|
||||
// Notify enclosing activity to switch panels
|
||||
nowPlayingListener.SwitchToRemotePanel();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(int errorCode, String description) {
|
||||
if (!isAdded()) return;
|
||||
Toast.makeText(getActivity(),
|
||||
String.format(getString(R.string.error_executing_subtitles), description),
|
||||
Toast.LENGTH_SHORT).show();
|
||||
|
|
|
@ -382,11 +382,13 @@ public class PlaylistFragment extends Fragment
|
|||
getPlaylists.execute(hostManager.getConnection(), new ApiCallback<ArrayList<PlaylistType.GetPlaylistsReturnType>>() {
|
||||
@Override
|
||||
public void onSucess(ArrayList<PlaylistType.GetPlaylistsReturnType> result) {
|
||||
if (!isAdded()) return;
|
||||
getPlaylistItems(getActivePlayerResult, getItemResult, result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(int errorCode, String description) {
|
||||
if (!isAdded()) return;
|
||||
// Oops
|
||||
displayErrorGettingPlaylistMessage(description);
|
||||
}
|
||||
|
@ -434,6 +436,7 @@ public class PlaylistFragment extends Fragment
|
|||
getItems.execute(hostManager.getConnection(), new ApiCallback<List<ListType.ItemsAll>>() {
|
||||
@Override
|
||||
public void onSucess(List<ListType.ItemsAll> result) {
|
||||
if (!isAdded()) return;
|
||||
// Ok, we've got all the info, save and display playlist
|
||||
lastGetPlaylistItemsResult = result;
|
||||
displayPlaylist(getItemResult, result);
|
||||
|
@ -441,6 +444,7 @@ public class PlaylistFragment extends Fragment
|
|||
|
||||
@Override
|
||||
public void onError(int errorCode, String description) {
|
||||
if (!isAdded()) return;
|
||||
// Oops
|
||||
displayErrorGettingPlaylistMessage(description);
|
||||
}
|
||||
|
|
|
@ -270,6 +270,7 @@ public class RemoteFragment extends Fragment
|
|||
private ApiCallback<Integer> defaultPlaySpeedChangedCallback = new ApiCallback<Integer>() {
|
||||
@Override
|
||||
public void onSucess(Integer result) {
|
||||
if (!isAdded()) return;
|
||||
UIUtils.setPlayPauseButtonIcon(getActivity(), playButton, result);
|
||||
}
|
||||
|
||||
|
|
|
@ -228,7 +228,7 @@ public class SettingsFragment extends PreferenceFragment
|
|||
|
||||
// update UI accordingly
|
||||
mSettings.hasBoughtCoffee = hasUpgrade;
|
||||
setupPreferences(mSettings.hasBoughtCoffee);
|
||||
if (isAdded()) setupPreferences(mSettings.hasBoughtCoffee);
|
||||
mSettings.save();
|
||||
}
|
||||
});
|
||||
|
|
|
@ -334,6 +334,7 @@ public class TVShowEpisodeDetailsFragment extends Fragment
|
|||
action.execute(hostManager.getConnection(), new ApiCallback<String>() {
|
||||
@Override
|
||||
public void onSucess(String result) {
|
||||
if (!isAdded()) return;
|
||||
// Check whether we should switch to the remote
|
||||
boolean switchToRemote = PreferenceManager
|
||||
.getDefaultSharedPreferences(getActivity())
|
||||
|
@ -348,6 +349,7 @@ public class TVShowEpisodeDetailsFragment extends Fragment
|
|||
|
||||
@Override
|
||||
public void onError(int errorCode, String description) {
|
||||
if (!isAdded()) return;
|
||||
// Got an error, show toast
|
||||
Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
|
@ -362,6 +364,7 @@ public class TVShowEpisodeDetailsFragment extends Fragment
|
|||
getPlaylists.execute(hostManager.getConnection(), new ApiCallback<ArrayList<PlaylistType.GetPlaylistsReturnType>>() {
|
||||
@Override
|
||||
public void onSucess(ArrayList<PlaylistType.GetPlaylistsReturnType> result) {
|
||||
if (!isAdded()) return;
|
||||
// Ok, loop through the playlists, looking for the video one
|
||||
int videoPlaylistId = -1;
|
||||
for (PlaylistType.GetPlaylistsReturnType playlist : result) {
|
||||
|
@ -378,6 +381,7 @@ public class TVShowEpisodeDetailsFragment extends Fragment
|
|||
action.execute(hostManager.getConnection(), new ApiCallback<String>() {
|
||||
@Override
|
||||
public void onSucess(String result) {
|
||||
if (!isAdded()) return;
|
||||
// Got an error, show toast
|
||||
Toast.makeText(getActivity(), R.string.item_added_to_playlist, Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
|
@ -385,12 +389,14 @@ public class TVShowEpisodeDetailsFragment extends Fragment
|
|||
|
||||
@Override
|
||||
public void onError(int errorCode, String description) {
|
||||
if (!isAdded()) return;
|
||||
// Got an error, show toast
|
||||
Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
}
|
||||
}, callbackHandler);
|
||||
} else {
|
||||
if (!isAdded()) return;
|
||||
Toast.makeText(getActivity(), R.string.no_suitable_playlist, Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
}
|
||||
|
@ -417,8 +423,8 @@ public class TVShowEpisodeDetailsFragment extends Fragment
|
|||
@Override
|
||||
public void onSucess(String result) {
|
||||
// Force a refresh, but don't show a message
|
||||
if (isAdded())
|
||||
startSync(true);
|
||||
if (!isAdded()) return;
|
||||
startSync(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Reference in New Issue