2016-04-05 15 views
0

Ich habe ein seltsames Problem.Android-Fragment an der falschen Stelle

In der Haupttätigkeit verwende ich diesen Code:

public class MyPagerAdapter extends FragmentPagerAdapter { 

    private final String[] TITLES = {"Laatste Nieuws", "Uitrukken", "Voertuigen", "Contact", "Top Grossing"}; 

    public MyPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return TITLES[position]; 
    } 

    @Override 
    public int getCount() { 
     return TITLES.length; 
    } 

    @Override 
    public Fragment getItem(int position) { 

     Fragment fragment = null; 

     switch (position) { 
      case 0: 
       fragment = NaviContentFragment.newInstance(position); 
       break; 
      case 1: 
       fragment = NaviContentFragmentTwo.newInstance(position); 
       break; 
      case 2: 
       fragment = NaviContentFragment.newInstance(position); 
       break; 
      case 3: 
       fragment = NaviContentFragment.newInstance(position); 
       break; 
      case 4: 
       fragment = NaviContentFragment.newInstance(position); 
       break; 
      default: 
       break; 
     } 

     return fragment; 
    } 
} 

Wenn ich also eine Registerkarte öffnen wird es ein neues Fragment öffnen. Und wenn ich Tab 1 mit der Aufschrift "Uitrukken" öffne, sollte es ein anderes Fragment öffnen als die anderen. Dieses Fragment:

public class NaviContentFragmentTwo extends Fragment { 

private static final String ARG_POSITION = "position"; 

public static NaviContentFragment newInstance(int position) { 

    NaviContentFragment fragment = new NaviContentFragment(); 
    Bundle b = new Bundle(); 
    b.putInt(ARG_POSITION, position); 
    fragment.setArguments(b); 

    return fragment; 
} 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    View rootView = rootView = inflater.inflate(R.layout.navi_content_two, container, false); 

    TextView textViewNaviConTwo = (TextView) rootView.findViewById(R.id.textViewNaviConTwo); 

    textViewNaviConTwo.setText("HALLLOOOTJES :)"); 

    return rootView; 
} 

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
} 
} 

Mit dem Text "HALLLOOOTJES :)". Und nur in diesem Fragment. Aber andersherum passiert. Dieser Text wird auf allen Registerkarten mit Ausnahme der Registerkarte Nummer 1 angezeigt.

Ich vermisse sicherlich etwas.

Screenshots:

It should say "HALLLOOOTJES :)"

Antwort

1

In Ihrer NaviContentFragmentTwo Klasse, kehren Sie ein NaviContentFragment von Ihrer newInstance Methode.

Ich schätze, Sie sollten eine NaviContentFragmentTwo Instanz zurückgeben.

So sollte es so etwas wie ..

public class NaviContentFragmentTwo extends Fragment { 

    private static final String ARG_POSITION = "position"; 
    public static NaviContentFragmentTwo newInstance(int position) { 
     NaviContentFragmentTwo fragment = new NaviContentFragmentTwo(); 
     Bundle b = new Bundle(); 
     b.putInt(ARG_POSITION, position); 
     fragment.setArguments(b); 

     return fragment; 
    } 
+0

Vielen Dank. Das war nur ein dummer Fehler von mir ... –

+0

@ S.Kortekaas Keine Sorgen. Wir machen es alle. Froh, dass es sortiert – Doomsknight

0

Dieser Code könnte die mögliche Ursache sein:

public static NaviContentFragment newInstance(int position) { 

NaviContentFragment fragment = new NaviContentFragment(); 
Bundle b = new Bundle(); 
b.putInt(ARG_POSITION, position); 
fragment.setArguments(b); 

return fragment; 
} 

Versuchen NaviContentFragment zu NaviContentFragmentTwo ersetzen.

+0

Vielen Dank. Das war nur ein dummer Fehler von mir ... –

+0

Nein, es war nicht dumm. Wir alle machen Fehler. Hab einen schönen Tag! – fmpsagara

Verwandte Themen