2017-06-20 14 views
0

Ich habe ein Fragment, das einen Viewpager enthält und ich kann die Aktivität/den Kontext nicht durch Aufruf von "getActivity()" in einem der Fragmente des Viewpagers erhalten.Wie erhält man einen Aktivitätskontext in einem Viewpager-Fragment, wenn viewpager von einem Fragment gehostet wird?

Ich habe einen gültigen Kontext der Aktivität in OnCreateView und in OnAttach, aber nicht nachdem ich zu dem Fragment innerhalb des Viewpager geklaut habe. Alle Mitglieder, die ich in onCreateView erstellt habe und die einen Kontext benötigen, sind ebenfalls null (nach dem Wischen).

Ich habe versucht, die Aktivität in einem Mitglied zu speichern, aber das hat auch nicht funktioniert, und ich mag es nicht wirklich, den Kontext wegen möglicher Speicherlecks zu speichern.

Kann mir jemand dabei helfen?

Vielen Dank im Voraus!

Antwort

0

I es gelöst ....

getActivity() zurückgegeben null, nachdem ich für das Hinzufügen eines Bildes auf das Fragment eine Absicht begann. Nachdem ich ein Bild ausgewählt hatte, wurde die Methode "getItem (int position)" in meinem FragmentPAgerAdapter erneut aufgerufen und ich erstellte dort ein neues Fragment, also wurde "getActivity()" dann auf einem ungültigen Fragment aufgerufen.

Es war wie:

public class SectionsPagerAdapter extends FragmentPagerAdapter 
{ 
    public SectionsPagerAdapter(FragmentManager fm) 
    { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) 
    { 
     switch (position) 
     { 
      case 0: return MyFragment.newInstance("MyFragment"); 

Es ist jetzt mag:

public class SectionsPagerAdapter erweitert FragmentPagerAdapter { public SectionsPagerAdapter (FragmentManager fm) { Super (fm); }

@Override 
    public Fragment getItem(int position) 
    { 
     switch (position) 
     { 
      case 0: if (mFragment==null) 
         mFragment=new MyFragment(); 
        return mFragment; 

So, jetzt bin ich die Rückkehr bereits erstellt Fragment und nicht eine andere.

Verwandte Themen