
DagobertDokate
Dauer-User
- 137
Guten Tag,
Ich habe einen "abstract view pager" erstellt, der die Navigation speicher und analytics aktualisiert, da wir diesen öfters benutzen.
Jetzt ist dabei aber ein Problem aufgetreten: Wenn ich den Backstack benutze, sprich zurück werden die tabs nicht mehr richtig wiederhergestellt, und bleiben einfach leer.
Kann mir einer sagen wo das Problem liegen könnte oder hat jemand schon mal das selbe oder ähnliches Problem gehabt?
und ihr die konkrete Klasse:
lg. Dagobert
Ich habe einen "abstract view pager" erstellt, der die Navigation speicher und analytics aktualisiert, da wir diesen öfters benutzen.
Jetzt ist dabei aber ein Problem aufgetreten: Wenn ich den Backstack benutze, sprich zurück werden die tabs nicht mehr richtig wiederhergestellt, und bleiben einfach leer.
Kann mir einer sagen wo das Problem liegen könnte oder hat jemand schon mal das selbe oder ähnliches Problem gehabt?
Code:
package de.veeapp.app.android.view;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import de.veeapp.app.android.R;
/**
*
* @author
* @since 2013
*/
public abstract class AbstractViewPagerView extends Fragment {
protected static final String TAG = "AbstractViewPagerView";
protected static final String SAVE_TAB_STATE = "tab_sate";
protected int currentPosition = 0;
/**
* The {@link ViewPager} that will host the section contents.
*/
protected ViewPager viewPager;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.d(TAG, "onCreateView()");
View view = inflater.inflate(R.layout.fragment_abstract_view_pager,
container, false);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Log.d(TAG, "onActivityCreated()");
// Set up the ViewPager with the sections adapter.
viewPager = (ViewPager) getActivity().findViewById(R.id.pager);
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
currentPosition = position;
setTracker(currentPosition);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// do nothing
}
@Override
public void onPageScrollStateChanged(int arg0) {
// do nothing
}
});
if (savedInstanceState != null) {
Log.d(TAG, "Restore state");
if (savedInstanceState.containsKey(SAVE_TAB_STATE)) {
currentPosition = savedInstanceState.getInt(SAVE_TAB_STATE);
Log.d(TAG, "Restore position: " + currentPosition);
}
} else {
Log.d(TAG, "Restore nothing");
}
viewPager.setCurrentItem(currentPosition);
}
protected abstract void setTracker(int currentPosition);
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt(SAVE_TAB_STATE, currentPosition);
}
}
und ihr die konkrete Klasse:
Code:
package de.veeapp.app.android.view.group;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.util.Log;
import com.google.analytics.tracking.android.EasyTracker;
import de.veeapp.app.android.view.AbstractViewPagerView;
/**
* @author
* @since 2013
*/
public class GroupFragment extends AbstractViewPagerView {
private final static String TAG = "GroupFragment";
public static final String GROUP_ID = "group_id";
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
EasyTracker.getTracker().sendView("My Groups");
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
FragmentManager fm = getFragmentManager();
viewPager.setAdapter(new GroupSectionsPagerAdapter(fm, getActivity()));
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d(TAG, "requestCoode: " + requestCode);
Log.d(TAG, "resultCode: " + resultCode);
Fragment fragment = (Fragment) viewPager.getAdapter().instantiateItem(
viewPager, 2);
fragment.onActivityResult(requestCode, resultCode, data);
}
@Override
protected void setTracker(int position) {
switch (position) {
case 0:
EasyTracker.getTracker().sendView("My Groups");
break;
case 1:
EasyTracker.getTracker().sendView("All Groups");
break;
case 2:
EasyTracker.getTracker().sendView("Create Group");
break;
default:
EasyTracker.getTracker().sendView("Group Fragment");
break;
}
}
}
lg. Dagobert
Anhänge
Zuletzt bearbeitet: