diff --git a/app/src/main/java/de/sebse/fuplanner/MainActivity.java b/app/src/main/java/de/sebse/fuplanner/MainActivity.java index 7ddcd08..fa144b1 100644 --- a/app/src/main/java/de/sebse/fuplanner/MainActivity.java +++ b/app/src/main/java/de/sebse/fuplanner/MainActivity.java @@ -204,8 +204,14 @@ public class MainActivity extends AppCompatActivity @Override protected void onSaveInstanceState(Bundle savedInstanceState) { + Fragment fragment = mFragmentManager.findFragmentByTag(String.valueOf(fragmentPage)); savedInstanceState.putInt(ARG_FRAGMENT_PAGE, fragmentPage); savedInstanceState.putString(ARG_FRAGMENT_STATUS, fragmentData); + if (fragment instanceof ModDetailFragment) { + savedInstanceState.putString(ARG_FRAGMENT_STATUS, ((ModDetailFragment) fragment).getData()); + } else { + savedInstanceState.putString(ARG_FRAGMENT_STATUS, fragmentData); + } super.onSaveInstanceState(savedInstanceState); } diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailFragment.java b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailFragment.java index 1696933..98cf923 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailFragment.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailFragment.java @@ -47,7 +47,11 @@ public class ModDetailFragment extends Fragment implements ModDetailListener { public static Fragment newInstance(String itemPosition) { ModDetailFragment fragment = new ModDetailFragment(); Bundle args = new Bundle(); - args.putString(ARG_POSITION, itemPosition);//+"."+0); + if (!itemPosition.contains(".")) + args.putString(ARG_POSITION, itemPosition+"."+0); + else + args.putString(ARG_POSITION, itemPosition); + fragment.setArguments(args); return fragment; } @@ -57,8 +61,15 @@ public class ModDetailFragment extends Fragment implements ModDetailListener { super.onCreate(savedInstanceState); log.d("load instance"); if (getArguments() != null) { - mItemPos = getArguments().getString(ARG_POSITION); - + String itemPosition = getArguments().getString(ARG_POSITION); + if (!itemPosition.contains(".")) { + mItemPos = itemPosition; + mPageRestoreRequest = null; + } else { + String[] split = itemPosition.split("\\.", 2); + mItemPos = split[0]; + mPageRestoreRequest = split[1]; + } } if (mListener != null) { mListener.onTitleTextChange(R.string.courses); @@ -79,6 +90,8 @@ public class ModDetailFragment extends Fragment implements ModDetailListener { mViewPager = v.findViewById(R.id.vpPager); ModDetailAdapter adapterViewPager = new ModDetailAdapter(getChildFragmentManager(), mItemPos, getContext()); mViewPager.setAdapter(adapterViewPager); + if (mPageRestoreRequest != null) + mViewPager.setCurrentItem(Integer.parseInt(mPageRestoreRequest)); return v; } @@ -103,4 +116,8 @@ public class ModDetailFragment extends Fragment implements ModDetailListener { public void gotoFragmentPart(int part, int index) { mViewPager.setCurrentItem(ModulePart.getPageByPart(part), true); } + + public String getData() { + return mItemPos+"."+mViewPager.getCurrentItem(); + } } diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailOverviewAdapter.java b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailOverviewAdapter.java index e9a6609..6e0aace 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailOverviewAdapter.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailOverviewAdapter.java @@ -7,7 +7,6 @@ import android.util.Pair; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.TextView; import com.ms.square.android.expandabletextview.ExpandableTextView; diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailOverviewFragment.java b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailOverviewFragment.java index 5573ae3..5793963 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailOverviewFragment.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailOverviewFragment.java @@ -86,6 +86,7 @@ public class ModDetailOverviewFragment extends Fragment { if (getActivity() != null) { KVV kvv = ((MainActivity) getActivity()).getKVV(); kvv.getModule(mItemPos, (Modules.Module module) -> { + log.d("onRefresh", module); adapter.setModule(module); kvv.getModuleDetails(module, pair -> { adapter.setModule(); diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/KVVModuleList.java b/app/src/main/java/de/sebse/fuplanner/services/KVV/KVVModuleList.java index 8db0e82..9983700 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/KVVModuleList.java +++ b/app/src/main/java/de/sebse/fuplanner/services/KVV/KVVModuleList.java @@ -20,15 +20,15 @@ import java.util.regex.MatchResult; import de.sebse.fuplanner.services.KVV.types.Announcement; import de.sebse.fuplanner.services.KVV.types.Assignment; +import de.sebse.fuplanner.services.KVV.types.AssignmentList; import de.sebse.fuplanner.services.KVV.types.Event; +import de.sebse.fuplanner.services.KVV.types.EventList; import de.sebse.fuplanner.services.KVV.types.Gradebook; import de.sebse.fuplanner.services.KVV.types.Lecturer; import de.sebse.fuplanner.services.KVV.types.LoginToken; import de.sebse.fuplanner.services.KVV.types.Modules; -import de.sebse.fuplanner.services.KVV.types.AssignmentList; import de.sebse.fuplanner.services.KVV.types.Resource; import de.sebse.fuplanner.tools.AsyncQueue; -import de.sebse.fuplanner.services.KVV.types.EventList; import de.sebse.fuplanner.tools.Regex; import de.sebse.fuplanner.tools.network.HTTPService; import de.sebse.fuplanner.tools.network.NetworkCallback; @@ -36,8 +36,6 @@ import de.sebse.fuplanner.tools.network.NetworkError; import de.sebse.fuplanner.tools.network.NetworkErrorCallback; import de.sebse.fuplanner.tools.network.Result; -import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE; - /** * Created by sebastian on 29.10.17. */ @@ -145,7 +143,10 @@ class KVVModuleList extends HTTPService { } public void getModule(String id, final NetworkCallback callback, final NetworkErrorCallback errorCallback, boolean forceRefresh) { - this.getModuleList(success -> callback.onResponse(success.get(id)), errorCallback, forceRefresh); + this.getModuleList(success -> { + log.d("liste", success.size(), id, success.get(id)); + callback.onResponse(success.get(id)); + }, errorCallback, forceRefresh); }