Domanda

Va bene, il problema è quasi lo stesso con questo post, ma la soluzione non ha risolto il mio problema.

Io uso FragmentPagerAdapter con un List tenendo il FragmentS come il seguente mostrato.

public class ViewPageAdapter extends FragmentPagerAdapter {
    private List<Fragment> fragments;

    public ViewPagerAdapter(FragmentManager fm, List<Fragment> fragments) {
        super(fm);
        this.fragments = fragments;
    }

    @Override
    public Fragment getItem(int position) {
        return fragments.get(position);
    }

    @Override
    public int getCount() {
        return fragments.size();
    }

    ...
}

E la mia Fragment Sverra il metodo OnCreateView come questo.

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
    return inflater.inflate(theLayoutResourceId, container, false);
}

Se si utilizza il metodo in questo post (oltrepassare int getItemPosition(Object object) ritornare POSITION_NONE), Prenderòjava.util.ConcurrentModificationException Dopo aver chiamato notifyDataSetChanged().

Il flusso di chiamate del metodo è così.

  1. a ViewPager Pagina Index 1, Apri a Dialog tramite clic a Button (Allo stesso modo del LoginButton Nell'esempio Android di Facebook)
  2. Dopo la finestra di dialogo si è chiusa (onAuthSucceed), rimuovere ViewPager Pagina Indice 1 e e aggiungi un'altra pagina per essere l'indice della pagina 1
  3. Aggiornamento della forza utilizzando notifyDataSetChanged

Ho provato molti altri modi per rimuovere un Fragment Prima di aggiungere un Fragment All'adattatore, ma la pagina non si aggiornerà al nuovo contenuto.

Ho appena trovato un metodo per rendere vuota la pagina ...

viewpager.removeViewAt(1);
viewpagerAdapter.removeItem(1);
viewpagerAdapter.addItem(1, new Fragment(...));

O risolvere il problema di aggiornamento o java.util.ConcurrentModificationException sarebbe bello. Grazie per l'aiuto :)

È stato utile?

Soluzione

Questo post è un po 'vecchio, ma nel caso in cui qualcuno si imbattesse in questo. Ho trovato la risposta in un post simile qui. Sembra che tu sia sulla strada giusta, ma devi cambiare il tuo frammentpageradapter in un frammentstatepageradapter e sovrascrivere il getItemposition (oggetto), come hai suggerito nel tuo post.

Buona fortuna a te.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top