2

In meiner Anwendung habe ich 3 Fragmente in einem viewPager. Für das erste Fragment möchte ich nach einem Tastendruck die Ansicht neu laden (im Prinzip nochmal die onCreateView() aufrufen).Fragmentierungsansicht in ViewPager aktualisieren

diese Funktionalität erhalten ich FragmentTransaction, detach(), attach() und commit() das Fragment zu verwenden, entschieden.

In Fragment habe ich erstellt SetData() Methode:

public void setData() { 
    Fragment frg = null; 
    frg = mainMenu.getFragmentByPosition(); 
    final android.support.v4.app.FragmentTransaction ft = getFragmentManager().beginTransaction(); 
    ft.detach(frg); 
    ft.attach(frg); 
    ft.commit(); 
} 

In der Aktivität, die die viewPager hält Ich habe getFragmentByPosition() Methode:

public Fragment getFragmentByPosition() { 
    String tag = "android:switcher:" + R.id.viewpager + ":" + viewPager.getCurrentItem(); 
    return getSupportFragmentManager().findFragmentByTag(tag); 
} 

Das Problem ist, dass ich Nullpointer in getFragmentByPosition()

erhalten

UPDATE

Das Problem ist, dass ich den Verweis auf ein derzeit angezeigtes Fragment nicht erhalten kann.

adapter.getItem(1) - gibt null

getFragmentManager().getFragments().get(0) - gibt null

+0

Haben Sie versucht mit 'adapter.notifyDataSetChanged();' – Dhruv

Antwort

0

Wenn Sie 3 Fragmente haben, erstellen Sie 3 einzigartige Saiten TAG1, TAG2, TAG3 und dann jedes Fragment hinzufügen seine einzigartigen Tag mit

getSupportFragmentManager().beginTransaction().add(R.id.mycontainer, new MyFragment1(), TAG1).commit(); 

Dann finden Sie mit den gleichen Tags

+0

Funktioniert es auch so, wenn die Fragmente in FragmentPagerAdapter sind? – user3844748

+0

FragmentPagerAdapter gibt ein Fragment für eine gegebene Position. getItem (1) soll immer dein erstes Fragment zurückgeben, getItem (2) das zweite usw. Keine Tags. –

+0

Das Problem ist, dass die adapter.getItem (1) auch NullPointerException haben. – user3844748