Resolved dialog issues + fragment crashes
This commit is contained in:
parent
e68482e1b8
commit
1fe2a8da45
@ -1,14 +1,14 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:orientation="vertical"
|
android:layout_width="match_parent"
|
||||||
android:layout_width="match_parent"
|
android:layout_height="match_parent">
|
||||||
android:layout_height="match_parent">
|
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/header"
|
android:id="@+id/header"
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
|
android:layout_alignParentTop="true"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
@ -39,14 +39,17 @@
|
|||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<View
|
<View
|
||||||
|
android:id="@+id/divider"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="3dp"
|
android:layout_height="3dp"
|
||||||
|
android:layout_below="@id/header"
|
||||||
android:background="@color/bright_blue"/>
|
android:background="@color/bright_blue"/>
|
||||||
|
|
||||||
<WebView
|
<WebView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="0dp"
|
||||||
|
android:layout_below="@id/divider"
|
||||||
|
android:layout_alignParentBottom="true"
|
||||||
android:id="@+id/webview"/>
|
android:id="@+id/webview"/>
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
</LinearLayout>
|
|
@ -33,6 +33,7 @@ import de.danoeh.antennapod.util.QueueAccess;
|
|||||||
import de.danoeh.antennapod.util.ShownotesProvider;
|
import de.danoeh.antennapod.util.ShownotesProvider;
|
||||||
import de.danoeh.antennapod.util.menuhandler.FeedItemMenuHandler;
|
import de.danoeh.antennapod.util.menuhandler.FeedItemMenuHandler;
|
||||||
import org.apache.commons.lang3.StringEscapeUtils;
|
import org.apache.commons.lang3.StringEscapeUtils;
|
||||||
|
import org.shredzone.flattr4j.model.User;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
@ -53,14 +54,35 @@ public class FeedItemDialog extends Dialog {
|
|||||||
private ImageButton butMore;
|
private ImageButton butMore;
|
||||||
private PopupMenu popupMenu;
|
private PopupMenu popupMenu;
|
||||||
|
|
||||||
public FeedItemDialog(Context context, FeedItem item, QueueAccess queue) {
|
public static FeedItemDialog newInstace(Context context, FeedItem item, QueueAccess queue) {
|
||||||
super(context);
|
if (useDarkThemeWorkAround()) {
|
||||||
|
return new FeedItemDialog(context, R.style.Theme_AntennaPod_Dark, item, queue);
|
||||||
|
} else {
|
||||||
|
return new FeedItemDialog(context, item, queue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public FeedItemDialog(Context context, int theme, FeedItem item, QueueAccess queue) {
|
||||||
|
super(context, theme);
|
||||||
if (item == null) throw new IllegalArgumentException("item = null");
|
if (item == null) throw new IllegalArgumentException("item = null");
|
||||||
if (queue == null) throw new IllegalArgumentException("queue = null");
|
if (queue == null) throw new IllegalArgumentException("queue = null");
|
||||||
this.item = item;
|
this.item = item;
|
||||||
this.queue = queue;
|
this.queue = queue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private FeedItemDialog(Context context, FeedItem item, QueueAccess queue) {
|
||||||
|
this(context, 0, item, queue);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if the dialog should use a dark theme. This has to be done on Gingerbread devices
|
||||||
|
* because dialogs are only available in a dark theme.
|
||||||
|
*/
|
||||||
|
private static boolean useDarkThemeWorkAround() {
|
||||||
|
return Build.VERSION.SDK_INT <= Build.VERSION_CODES.GINGERBREAD_MR1
|
||||||
|
&& UserPreferences.getTheme() != R.style.Theme_AntennaPod_Dark;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@ -170,6 +192,8 @@ public class FeedItemDialog extends Dialog {
|
|||||||
updateMenuAppearance();
|
updateMenuAppearance();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private final FeedItemMenuHandler.MenuInterface popupMenuInterface = new FeedItemMenuHandler.MenuInterface() {
|
private final FeedItemMenuHandler.MenuInterface popupMenuInterface = new FeedItemMenuHandler.MenuInterface() {
|
||||||
@Override
|
@Override
|
||||||
public void setItemVisibility(int id, boolean visible) {
|
public void setItemVisibility(int id, boolean visible) {
|
||||||
@ -260,7 +284,12 @@ public class FeedItemDialog extends Dialog {
|
|||||||
.getTheme()
|
.getTheme()
|
||||||
.obtainStyledAttributes(
|
.obtainStyledAttributes(
|
||||||
new int[]{android.R.attr.textColorPrimary});
|
new int[]{android.R.attr.textColorPrimary});
|
||||||
int colorResource = res.getColor(0, 0);
|
int colorResource;
|
||||||
|
if (useDarkThemeWorkAround()) {
|
||||||
|
colorResource = getContext().getResources().getColor(R.color.black);
|
||||||
|
} else {
|
||||||
|
colorResource = res.getColor(0, 0);
|
||||||
|
}
|
||||||
String colorString = String.format("#%06X",
|
String colorString = String.format("#%06X",
|
||||||
0xFFFFFF & colorResource);
|
0xFFFFFF & colorResource);
|
||||||
Log.i(TAG, "text color: " + colorString);
|
Log.i(TAG, "text color: " + colorString);
|
||||||
|
@ -53,6 +53,11 @@ public class CompletedDownloadsFragment extends ListFragment {
|
|||||||
public void onDetach() {
|
public void onDetach() {
|
||||||
super.onDetach();
|
super.onDetach();
|
||||||
stopItemLoader();
|
stopItemLoader();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDestroyView() {
|
||||||
|
super.onDestroyView();
|
||||||
listAdapter = null;
|
listAdapter = null;
|
||||||
viewCreated = false;
|
viewCreated = false;
|
||||||
}
|
}
|
||||||
|
@ -118,7 +118,6 @@ public class ItemlistFragment extends ListFragment {
|
|||||||
super.onStop();
|
super.onStop();
|
||||||
EventDistributor.getInstance().unregister(contentUpdate);
|
EventDistributor.getInstance().unregister(contentUpdate);
|
||||||
stopItemLoader();
|
stopItemLoader();
|
||||||
resetViewState();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -131,6 +130,11 @@ public class ItemlistFragment extends ListFragment {
|
|||||||
public void onDetach() {
|
public void onDetach() {
|
||||||
super.onDetach();
|
super.onDetach();
|
||||||
stopItemLoader();
|
stopItemLoader();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDestroyView() {
|
||||||
|
super.onDestroyView();
|
||||||
resetViewState();
|
resetViewState();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -233,7 +237,7 @@ public class ItemlistFragment extends ListFragment {
|
|||||||
@Override
|
@Override
|
||||||
public void onListItemClick(ListView l, View v, int position, long id) {
|
public void onListItemClick(ListView l, View v, int position, long id) {
|
||||||
FeedItem selection = adapter.getItem(position - l.getHeaderViewsCount());
|
FeedItem selection = adapter.getItem(position - l.getHeaderViewsCount());
|
||||||
feedItemDialog = new FeedItemDialog(getActivity(), selection, queue);
|
feedItemDialog = FeedItemDialog.newInstace(getActivity(), selection, queue);
|
||||||
feedItemDialog.show();
|
feedItemDialog.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,7 +100,6 @@ public class NewEpisodesFragment extends Fragment {
|
|||||||
super.onStop();
|
super.onStop();
|
||||||
EventDistributor.getInstance().unregister(contentUpdate);
|
EventDistributor.getInstance().unregister(contentUpdate);
|
||||||
stopItemLoader();
|
stopItemLoader();
|
||||||
resetViewState();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -110,8 +109,8 @@ public class NewEpisodesFragment extends Fragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDetach() {
|
public void onDestroyView() {
|
||||||
super.onDetach();
|
super.onDestroyView();
|
||||||
resetViewState();
|
resetViewState();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -192,7 +191,7 @@ public class NewEpisodesFragment extends Fragment {
|
|||||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||||
FeedItem item = (FeedItem) listAdapter.getItem(position - listView.getHeaderViewsCount());
|
FeedItem item = (FeedItem) listAdapter.getItem(position - listView.getHeaderViewsCount());
|
||||||
if (item != null) {
|
if (item != null) {
|
||||||
feedItemDialog = new FeedItemDialog(activity.get(), item, queueAccess);
|
feedItemDialog = FeedItemDialog.newInstace(activity.get(), item, queueAccess);
|
||||||
feedItemDialog.show();
|
feedItemDialog.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -73,13 +73,7 @@ public class PlaybackHistoryFragment extends ListFragment {
|
|||||||
public void onDetach() {
|
public void onDetach() {
|
||||||
super.onDetach();
|
super.onDetach();
|
||||||
stopItemLoader();
|
stopItemLoader();
|
||||||
adapter = null;
|
|
||||||
viewsCreated = false;
|
|
||||||
activity.set(null);
|
activity.set(null);
|
||||||
if (downloadObserver != null) {
|
|
||||||
downloadObserver.onPause();
|
|
||||||
}
|
|
||||||
feedItemDialog = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -95,6 +89,17 @@ public class PlaybackHistoryFragment extends ListFragment {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDestroyView() {
|
||||||
|
super.onDestroyView();
|
||||||
|
adapter = null;
|
||||||
|
viewsCreated = false;
|
||||||
|
if (downloadObserver != null) {
|
||||||
|
downloadObserver.onPause();
|
||||||
|
}
|
||||||
|
feedItemDialog = null;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||||
super.onViewCreated(view, savedInstanceState);
|
super.onViewCreated(view, savedInstanceState);
|
||||||
@ -109,7 +114,7 @@ public class PlaybackHistoryFragment extends ListFragment {
|
|||||||
super.onListItemClick(l, v, position, id);
|
super.onListItemClick(l, v, position, id);
|
||||||
FeedItem item = adapter.getItem(position - l.getHeaderViewsCount());
|
FeedItem item = adapter.getItem(position - l.getHeaderViewsCount());
|
||||||
if (item != null) {
|
if (item != null) {
|
||||||
feedItemDialog = new FeedItemDialog(activity.get(), item, queue);
|
feedItemDialog = FeedItemDialog.newInstace(activity.get(), item, queue);
|
||||||
feedItemDialog.show();
|
feedItemDialog.show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -96,7 +96,6 @@ public class QueueFragment extends Fragment {
|
|||||||
super.onStop();
|
super.onStop();
|
||||||
EventDistributor.getInstance().unregister(contentUpdate);
|
EventDistributor.getInstance().unregister(contentUpdate);
|
||||||
stopItemLoader();
|
stopItemLoader();
|
||||||
resetViewState();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -105,12 +104,6 @@ public class QueueFragment extends Fragment {
|
|||||||
this.activity.set((MainActivity) activity);
|
this.activity.set((MainActivity) activity);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onDetach() {
|
|
||||||
super.onDetach();
|
|
||||||
resetViewState();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void resetViewState() {
|
private void resetViewState() {
|
||||||
listAdapter = null;
|
listAdapter = null;
|
||||||
undoBarController = null;
|
undoBarController = null;
|
||||||
@ -123,6 +116,12 @@ public class QueueFragment extends Fragment {
|
|||||||
feedItemDialog = null;
|
feedItemDialog = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDestroyView() {
|
||||||
|
super.onDestroyView();
|
||||||
|
resetViewState();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
||||||
super.onCreateOptionsMenu(menu, inflater);
|
super.onCreateOptionsMenu(menu, inflater);
|
||||||
@ -160,7 +159,7 @@ public class QueueFragment extends Fragment {
|
|||||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||||
FeedItem item = (FeedItem) listAdapter.getItem(position - listView.getHeaderViewsCount());
|
FeedItem item = (FeedItem) listAdapter.getItem(position - listView.getHeaderViewsCount());
|
||||||
if (item != null) {
|
if (item != null) {
|
||||||
feedItemDialog = new FeedItemDialog(activity.get(), item, QueueAccess.ItemListAccess(queue));
|
feedItemDialog = FeedItemDialog.newInstace(activity.get(), item, QueueAccess.ItemListAccess(queue));
|
||||||
feedItemDialog.show();
|
feedItemDialog.show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -89,6 +89,11 @@ public class SearchFragment extends ListFragment {
|
|||||||
public void onDetach() {
|
public void onDetach() {
|
||||||
super.onDetach();
|
super.onDetach();
|
||||||
stopSearchTask();
|
stopSearchTask();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDestroyView() {
|
||||||
|
super.onDestroyView();
|
||||||
searchAdapter = null;
|
searchAdapter = null;
|
||||||
viewCreated = false;
|
viewCreated = false;
|
||||||
}
|
}
|
||||||
@ -112,7 +117,7 @@ public class SearchFragment extends ListFragment {
|
|||||||
((MainActivity)getActivity()).loadFeedFragment(comp.getId());
|
((MainActivity)getActivity()).loadFeedFragment(comp.getId());
|
||||||
} else {
|
} else {
|
||||||
if (comp.getClass() == FeedItem.class) {
|
if (comp.getClass() == FeedItem.class) {
|
||||||
feedItemDialog = new FeedItemDialog(getActivity(), (FeedItem) comp, queue);
|
feedItemDialog = FeedItemDialog.newInstace(getActivity(), (FeedItem) comp, queue);
|
||||||
feedItemDialog.show();
|
feedItemDialog.show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user