fix crashes in offline mode because of unbound swipelayout

This commit is contained in:
Andrew Dolgov 2014-10-19 19:57:14 +04:00
parent 5d5d925b3e
commit 1510e7985e
3 changed files with 48 additions and 4 deletions

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.fox.ttrss" package="org.fox.ttrss"
android:versionCode="242" android:versionCode="243"
android:versionName="1.43" > android:versionName="1.44" >
<uses-sdk <uses-sdk
android:minSdkVersion="8" android:minSdkVersion="8"

View File

@ -12,6 +12,7 @@ import android.preference.PreferenceManager;
import android.provider.BaseColumns; import android.provider.BaseColumns;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v4.widget.SimpleCursorAdapter; import android.support.v4.widget.SimpleCursorAdapter;
import android.support.v4.widget.SwipeRefreshLayout;
import android.util.Log; import android.util.Log;
import android.view.ContextMenu; import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo; import android.view.ContextMenu.ContextMenuInfo;
@ -35,6 +36,7 @@ public class OfflineFeedCategoriesFragment extends Fragment implements OnItemCli
private int m_selectedCatId; private int m_selectedCatId;
private Cursor m_cursor; private Cursor m_cursor;
private OfflineFeedsActivity m_activity; private OfflineFeedsActivity m_activity;
private SwipeRefreshLayout m_swipeLayout;
@Override @Override
public void onCreateContextMenu(ContextMenu menu, View v, public void onCreateContextMenu(ContextMenu menu, View v,
@ -66,6 +68,10 @@ public class OfflineFeedCategoriesFragment extends Fragment implements OnItemCli
} }
public void refresh() { public void refresh() {
if (!isAdded()) return;
if (m_swipeLayout != null) m_swipeLayout.setRefreshing(true);
if (m_cursor != null && !m_cursor.isClosed()) m_cursor.close(); if (m_cursor != null && !m_cursor.isClosed()) m_cursor.close();
m_cursor = createCursor(); m_cursor = createCursor();
@ -73,6 +79,7 @@ public class OfflineFeedCategoriesFragment extends Fragment implements OnItemCli
if (m_cursor != null && m_adapter != null) { if (m_cursor != null && m_adapter != null) {
m_adapter.changeCursor(m_cursor); m_adapter.changeCursor(m_cursor);
m_adapter.notifyDataSetChanged(); m_adapter.notifyDataSetChanged();
if (m_swipeLayout != null) m_swipeLayout.setRefreshing(false);
} }
} }
@ -135,6 +142,22 @@ public class OfflineFeedCategoriesFragment extends Fragment implements OnItemCli
View view = inflater.inflate(R.layout.feeds_fragment, container, false); View view = inflater.inflate(R.layout.feeds_fragment, container, false);
m_swipeLayout = (SwipeRefreshLayout) view.findViewById(R.id.feeds_swipe_container);
m_swipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
refresh();
}
});
if (!m_activity.isCompatMode()) {
m_swipeLayout.setColorScheme(android.R.color.holo_green_dark,
android.R.color.holo_red_dark,
android.R.color.holo_blue_dark,
android.R.color.holo_orange_dark);
}
ListView list = (ListView)view.findViewById(R.id.feeds); ListView list = (ListView)view.findViewById(R.id.feeds);
m_cursor = createCursor(); m_cursor = createCursor();

View File

@ -17,6 +17,7 @@ import android.preference.PreferenceManager;
import android.provider.BaseColumns; import android.provider.BaseColumns;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v4.widget.SimpleCursorAdapter; import android.support.v4.widget.SimpleCursorAdapter;
import android.support.v4.widget.SwipeRefreshLayout;
import android.util.Log; import android.util.Log;
import android.view.ContextMenu; import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo; import android.view.ContextMenu.ContextMenuInfo;
@ -43,6 +44,7 @@ public class OfflineFeedsFragment extends Fragment implements OnItemClickListene
private boolean m_enableFeedIcons; private boolean m_enableFeedIcons;
private Cursor m_cursor; private Cursor m_cursor;
private OfflineFeedsActivity m_activity; private OfflineFeedsActivity m_activity;
private SwipeRefreshLayout m_swipeLayout;
public void initialize(int catId) { public void initialize(int catId) {
m_catId = catId; m_catId = catId;
@ -124,6 +126,8 @@ public class OfflineFeedsFragment extends Fragment implements OnItemClickListene
try { try {
if (!isAdded()) return; if (!isAdded()) return;
if (m_swipeLayout != null) m_swipeLayout.setRefreshing(true);
if (m_cursor != null && !m_cursor.isClosed()) m_cursor.close(); if (m_cursor != null && !m_cursor.isClosed()) m_cursor.close();
m_cursor = createCursor(); m_cursor = createCursor();
@ -131,6 +135,7 @@ public class OfflineFeedsFragment extends Fragment implements OnItemClickListene
if (m_cursor != null && m_adapter != null) { if (m_cursor != null && m_adapter != null) {
m_adapter.changeCursor(m_cursor); m_adapter.changeCursor(m_cursor);
m_adapter.notifyDataSetChanged(); m_adapter.notifyDataSetChanged();
if (m_swipeLayout != null) m_swipeLayout.setRefreshing(false);
} }
} catch (NullPointerException e) { } catch (NullPointerException e) {
e.printStackTrace(); e.printStackTrace();
@ -147,6 +152,22 @@ public class OfflineFeedsFragment extends Fragment implements OnItemClickListene
View view = inflater.inflate(R.layout.feeds_fragment, container, false); View view = inflater.inflate(R.layout.feeds_fragment, container, false);
m_swipeLayout = (SwipeRefreshLayout) view.findViewById(R.id.feeds_swipe_container);
m_swipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
refresh();
}
});
if (!m_activity.isCompatMode()) {
m_swipeLayout.setColorScheme(android.R.color.holo_green_dark,
android.R.color.holo_red_dark,
android.R.color.holo_blue_dark,
android.R.color.holo_orange_dark);
}
ListView list = (ListView)view.findViewById(R.id.feeds); ListView list = (ListView)view.findViewById(R.id.feeds);
m_cursor = createCursor(); m_cursor = createCursor();