abstract view pager

  • 1 Antworten
  • Letztes Antwortdatum
DagobertDokate

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.
attachment.php


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

  • Problem.png
    Problem.png
    62,3 KB · Aufrufe: 585
Zuletzt bearbeitet:
Kann mir keiner weiter helfen?

mfg. Dagobert

Der ursprüngliche Beitrag von 14:47 Uhr wurde um 15:53 Uhr ergänzt:

Okay hat sich erledigt :D

Augen auf beim refactoring :D Hab wohl dabei getChildFragmentManager duch getFragmentManager getauscht :scared:

lg. Dagobert
 
Zurück
Oben Unten