Save Instance State more precise

This commit is contained in:
Caesar2011
2018-10-15 18:18:30 +02:00
parent f70e774896
commit ba3b07b8b4
5 changed files with 33 additions and 9 deletions

View File

@@ -204,8 +204,14 @@ public class MainActivity extends AppCompatActivity
@Override @Override
protected void onSaveInstanceState(Bundle savedInstanceState) { protected void onSaveInstanceState(Bundle savedInstanceState) {
Fragment fragment = mFragmentManager.findFragmentByTag(String.valueOf(fragmentPage));
savedInstanceState.putInt(ARG_FRAGMENT_PAGE, fragmentPage); savedInstanceState.putInt(ARG_FRAGMENT_PAGE, fragmentPage);
savedInstanceState.putString(ARG_FRAGMENT_STATUS, fragmentData); 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); super.onSaveInstanceState(savedInstanceState);
} }

View File

@@ -47,7 +47,11 @@ public class ModDetailFragment extends Fragment implements ModDetailListener {
public static Fragment newInstance(String itemPosition) { public static Fragment newInstance(String itemPosition) {
ModDetailFragment fragment = new ModDetailFragment(); ModDetailFragment fragment = new ModDetailFragment();
Bundle args = new Bundle(); 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); fragment.setArguments(args);
return fragment; return fragment;
} }
@@ -57,8 +61,15 @@ public class ModDetailFragment extends Fragment implements ModDetailListener {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
log.d("load instance"); log.d("load instance");
if (getArguments() != null) { 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) { if (mListener != null) {
mListener.onTitleTextChange(R.string.courses); mListener.onTitleTextChange(R.string.courses);
@@ -79,6 +90,8 @@ public class ModDetailFragment extends Fragment implements ModDetailListener {
mViewPager = v.findViewById(R.id.vpPager); mViewPager = v.findViewById(R.id.vpPager);
ModDetailAdapter adapterViewPager = new ModDetailAdapter(getChildFragmentManager(), mItemPos, getContext()); ModDetailAdapter adapterViewPager = new ModDetailAdapter(getChildFragmentManager(), mItemPos, getContext());
mViewPager.setAdapter(adapterViewPager); mViewPager.setAdapter(adapterViewPager);
if (mPageRestoreRequest != null)
mViewPager.setCurrentItem(Integer.parseInt(mPageRestoreRequest));
return v; return v;
} }
@@ -103,4 +116,8 @@ public class ModDetailFragment extends Fragment implements ModDetailListener {
public void gotoFragmentPart(int part, int index) { public void gotoFragmentPart(int part, int index) {
mViewPager.setCurrentItem(ModulePart.getPageByPart(part), true); mViewPager.setCurrentItem(ModulePart.getPageByPart(part), true);
} }
public String getData() {
return mItemPos+"."+mViewPager.getCurrentItem();
}
} }

View File

@@ -7,7 +7,6 @@ import android.util.Pair;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.TextView;
import com.ms.square.android.expandabletextview.ExpandableTextView; import com.ms.square.android.expandabletextview.ExpandableTextView;

View File

@@ -86,6 +86,7 @@ public class ModDetailOverviewFragment extends Fragment {
if (getActivity() != null) { if (getActivity() != null) {
KVV kvv = ((MainActivity) getActivity()).getKVV(); KVV kvv = ((MainActivity) getActivity()).getKVV();
kvv.getModule(mItemPos, (Modules.Module module) -> { kvv.getModule(mItemPos, (Modules.Module module) -> {
log.d("onRefresh", module);
adapter.setModule(module); adapter.setModule(module);
kvv.getModuleDetails(module, pair -> { kvv.getModuleDetails(module, pair -> {
adapter.setModule(); adapter.setModule();

View File

@@ -20,15 +20,15 @@ import java.util.regex.MatchResult;
import de.sebse.fuplanner.services.KVV.types.Announcement; import de.sebse.fuplanner.services.KVV.types.Announcement;
import de.sebse.fuplanner.services.KVV.types.Assignment; 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.Event;
import de.sebse.fuplanner.services.KVV.types.EventList;
import de.sebse.fuplanner.services.KVV.types.Gradebook; import de.sebse.fuplanner.services.KVV.types.Gradebook;
import de.sebse.fuplanner.services.KVV.types.Lecturer; import de.sebse.fuplanner.services.KVV.types.Lecturer;
import de.sebse.fuplanner.services.KVV.types.LoginToken; import de.sebse.fuplanner.services.KVV.types.LoginToken;
import de.sebse.fuplanner.services.KVV.types.Modules; 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.services.KVV.types.Resource;
import de.sebse.fuplanner.tools.AsyncQueue; 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.Regex;
import de.sebse.fuplanner.tools.network.HTTPService; import de.sebse.fuplanner.tools.network.HTTPService;
import de.sebse.fuplanner.tools.network.NetworkCallback; 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.NetworkErrorCallback;
import de.sebse.fuplanner.tools.network.Result; import de.sebse.fuplanner.tools.network.Result;
import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
/** /**
* Created by sebastian on 29.10.17. * Created by sebastian on 29.10.17.
*/ */
@@ -145,7 +143,10 @@ class KVVModuleList extends HTTPService {
} }
public void getModule(String id, final NetworkCallback<Modules.Module> callback, final NetworkErrorCallback errorCallback, boolean forceRefresh) { public void getModule(String id, final NetworkCallback<Modules.Module> 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);
} }