Soru & Cevap

Activity'den Fragment'i Güncelleme ...

11.06.2014 - 05:14

Arkadaşlar iyi çalışmalar.ViewPager sisteminde 2 fragmentim var.Activity'e observer ile haber geliyor.Haber geldiğinde benimde fragmentlere haber vermem gerekiyor.Fragmentler bu haberi aldığında Adapterlerini refresh edecekler.Bu işlemi nasıl yapabilirim bilgisi olan var mı?

11 Görüntülenme

1 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-1372-1408467635.jpg
ahmtbrk
11.06.2014 - 07:40

Sorunun cevabını yine ben vereyim neden bu ara bu portal bu kadar pasif anlayamadım:)

Global olarak bir int değişken tanımlayıp o esnada seçili olan tab'ın indexini tutmamız lazım bu bize çok lazım olacak.

[code]int selectedPosition;[/code]

Buna değeri nerede atacağız derseniz onTabSelected eventinde yapacağız.

[code]

@Override
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
        mainScreenPager.setCurrentItem(tab.getPosition());
        selectedPosition = tab.getPosition();
    }

[/code]

Şimdi fragmentlerde update yapmak için bi interface yazalım ve fragmentleri ondan implemetasyon edelim.

[code]

public interface UpdateData {
    public void updateData();
}

[/code]

fragmentimiz şöyle olacak.

[code]

public class FavoriteUserListFragment extends Fragment implements UpdateData {

..

.

.

.

 

private final Handler uiHandler = new Handler() {
    };

    @Override
    public void updateData() {
        Runnable visuals = new Runnable() {

            @Override
            public void run() {
                uiHandler.post(new Runnable() {

                    @Override
                    public void run() {
                        userListAdapter.notifyDataSetChanged();
                    }
                });
            }
        };
        new Thread(visuals).start();
    }

}

[/code]

... koyduğum yerlerde diğer kodlarınız var.bu updateData methodu arka taraftan tetiklendiğinde listview yenilenmesi için adapteri refresh ediyorum.

Şimdi bunu naasıl tetikleteceğiz onuda görelim.Activity içerisinde olay gerçekleştiğinde

[code]

FavoriteUserListFragment favoriteUserListFragment = (FavoriteUserListFragment)mainScreenTabsPagerAdapter.instantiateItem(mainScreenPager,selectedPosition);
                        if(favoriteUserListFragment!=null){
                            favoriteUserListFragment.updateData();
                        }

[/code]

tabspagerden fragment'i döndürüp ordaki methoduda bu şekilde tetiklettik.

İhtiyacı olan arkadaşlar yararlanabilir.