Fixed bugs&crashes

This commit is contained in:
Somethingweirdhere 2018-06-11 01:55:14 +02:00 committed by Christian Schabesberger
parent 6675d3e2cd
commit 5cb7771484
4 changed files with 82 additions and 32 deletions

View File

@ -59,7 +59,7 @@ public class MainFragment extends BaseFragment implements TabLayout.OnTabSelecte
private Bundle savedInstanceStateBundle;
SharedPreferences.OnSharedPreferenceChangeListener listener = (prefs, key) -> {
if(key.equals("saveUsedTabs")||key.equals("service")) {
if(key.equals("service")||key.equals("saveUsedTabs")) {
mainPageChanged();
}
};
@ -99,19 +99,66 @@ public class MainFragment extends BaseFragment implements TabLayout.OnTabSelecte
protected void initViews(View rootView, Bundle savedInstanceState) {
super.initViews(rootView, savedInstanceState);
getTabOrder();
tabLayout = rootView.findViewById(R.id.main_tab_layout);
viewPager = rootView.findViewById(R.id.pager);
/* Nested fragment, use child fragment here to maintain backstack in view pager. */
adapter = new PagerAdapter(getChildFragmentManager());
viewPager.setAdapter(adapter);
viewPager.setOffscreenPageLimit(adapter.getCount());
tabLayout.setupWithViewPager(viewPager);
mainPageChanged();
}
public void mainPageChanged() {
getTabOrder();
adapter.notifyDataSetChanged();
viewPager.setOffscreenPageLimit(adapter.getCount());
setIcons();
}
private void setIcons() {
for (int i = 0; i < tabs.size(); i++) {
String tabNumber = tabs.get(i);
TabLayout.Tab tabToSet = tabLayout.getTabAt(i);
if (tabToSet != null) {
if (tabNumber.startsWith("1\t")) {
String kiosk[] = tabNumber.split("\t");
if (kiosk.length == 2) {
try {
tabToSet.setIcon(KioskTranslator.getKioskIcons(kiosk[1], getContext()));
} catch (Exception e) {
//ignore this. It WILL be thrown while the service is changed.
}
}
} else if (tabNumber.startsWith("6\t")) {
tabToSet.setIcon(R.drawable.ic_channel_white_24dp);
} else {
switch (tabNumber) {
case "0":
tabToSet.setIcon(R.drawable.ic_whatshot_white_24dp);
case "2":
tabToSet.setIcon(R.drawable.ic_channel_white_24dp);
case "3":
tabToSet.setIcon(R.drawable.ic_rss_feed_white_24dp);
case "4":
tabToSet.setIcon(R.drawable.ic_bookmark_white_24dp);
case "5":
tabToSet.setIcon(R.drawable.ic_history_white_24dp);
}
}
}
}
}
private void getTabOrder() {
tabs.clear();
@ -194,11 +241,6 @@ public class MainFragment extends BaseFragment implements TabLayout.OnTabSelecte
public void onTabReselected(TabLayout.Tab tab) {
}
public void mainPageChanged() {
getTabOrder();
adapter.notifyDataSetChanged();
}
private class PagerAdapter extends FragmentPagerAdapter {
PagerAdapter(FragmentManager fm) {
super(fm);
@ -213,8 +255,6 @@ public class MainFragment extends BaseFragment implements TabLayout.OnTabSelecte
if(kiosk.length==2) {
KioskFragment fragment = null;
try {
tabLayout.getTabAt(position).setIcon(KioskTranslator.getKioskIcons(kiosk[1], getContext()));
fragment = KioskFragment.getInstance(currentServiceId, kiosk[1]);
fragment.useAsFrontPage(true);
return fragment;
@ -229,8 +269,6 @@ public class MainFragment extends BaseFragment implements TabLayout.OnTabSelecte
} else if(tabNumber.startsWith("6\t")) {
String channelInfo[] = tabNumber.split("\t");
if(channelInfo.length==4) {
tabLayout.getTabAt(position).setIcon(R.drawable.ic_channel_white_24dp);
ChannelFragment fragment = ChannelFragment.getInstance(Integer.parseInt(channelInfo[3]), channelInfo[1], channelInfo[2]);
fragment.useAsFrontPage(true);
return fragment;
@ -240,30 +278,20 @@ public class MainFragment extends BaseFragment implements TabLayout.OnTabSelecte
} else {
switch (tabNumber) {
case "0":
tabLayout.getTabAt(position).setIcon(R.drawable.ic_whatshot_white_24dp);
return new BlankFragment();
case "2":
tabLayout.getTabAt(position).setIcon(R.drawable.ic_channel_white_24dp);
SubscriptionFragment sfragment = new SubscriptionFragment();
sfragment.useAsFrontPage(true);
return sfragment;
case "3":
tabLayout.getTabAt(position).setIcon(R.drawable.ic_rss_feed_white_24dp);
FeedFragment ffragment = new FeedFragment();
ffragment.useAsFrontPage(true);
return ffragment;
case "4":
tabLayout.getTabAt(position).setIcon(R.drawable.ic_bookmark_white_24dp);
BookmarkFragment bFragment = new BookmarkFragment();
bFragment.useAsFrontPage(true);
return bFragment;
case "5":
tabLayout.getTabAt(position).setIcon(R.drawable.ic_history_white_24dp);
StatisticsPlaylistFragment cFragment = new StatisticsPlaylistFragment();
cFragment.useAsFrontPage(true);
return cFragment;
@ -284,5 +312,10 @@ public class MainFragment extends BaseFragment implements TabLayout.OnTabSelecte
public int getCount() {
return tabs.size();
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
getFragmentManager().beginTransaction().remove((Fragment)object).commitNowAllowingStateLoss();
}
}
}

View File

@ -91,6 +91,8 @@ public class ChannelFragment extends BaseListInfoFragment<ChannelInfo> {
private MenuItem menuRssButton;
private boolean mIsVisibleToUser = false;
public static ChannelFragment getInstance(int serviceId, String url, String name) {
ChannelFragment instance = new ChannelFragment();
instance.setInitialData(serviceId, url, name);
@ -104,6 +106,7 @@ public class ChannelFragment extends BaseListInfoFragment<ChannelInfo> {
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
mIsVisibleToUser = isVisibleToUser;
if(activity != null
&& useAsFrontPage
&& isVisibleToUser) {
@ -516,7 +519,13 @@ public class ChannelFragment extends BaseListInfoFragment<ChannelInfo> {
@Override
public void setTitle(String title) {
if(!useAsFrontPage) {
super.setTitle(title);
headerTitleView.setText(title);
} else {
if(mIsVisibleToUser) {
super.setTitle(title);
}
}
}
}

View File

@ -69,11 +69,10 @@ public final class BookmarkFragment
public View onCreateView(@NonNull LayoutInflater inflater,
@Nullable ViewGroup container,
Bundle savedInstanceState) {
if (activity != null && activity.getSupportActionBar() != null) {
activity.getSupportActionBar().setDisplayShowTitleEnabled(true);
activity.setTitle(R.string.tab_subscriptions);
}
if(!useAsFrontPage) {
setTitle(activity.getString(R.string.tab_bookmarks));
}
return inflater.inflate(R.layout.fragment_bookmarks, container, false);
}

View File

@ -71,6 +71,10 @@ public class FeedFragment extends BaseListFragment<List<SubscriptionEntity>, Voi
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
if(!useAsFrontPage) {
setTitle(activity.getString(R.string.fragment_whats_new));
}
return inflater.inflate(R.layout.fragment_feed, container, false);
}
@ -105,6 +109,14 @@ public class FeedFragment extends BaseListFragment<List<SubscriptionEntity>, Voi
super.onDestroyView();
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (activity != null && isVisibleToUser) {
setTitle(activity.getString(R.string.fragment_whats_new));
}
}
/*@Override
protected RecyclerView.LayoutManager getListLayoutManager() {
boolean isPortrait = getResources().getDisplayMetrics().heightPixels > getResources().getDisplayMetrics().widthPixels;
@ -116,9 +128,6 @@ public class FeedFragment extends BaseListFragment<List<SubscriptionEntity>, Voi
super.onCreateOptionsMenu(menu, inflater);
ActionBar supportActionBar = activity.getSupportActionBar();
if (supportActionBar != null) {
supportActionBar.setTitle(R.string.fragment_whats_new);
}
if(useAsFrontPage) {
supportActionBar.setDisplayShowTitleEnabled(true);