Jestem naprawdę nowy w systemie Android i wdrażam mały projekt, w którym mam wiadomości z jednej strony Drupala. Ta aplikacja ma 3 karty, a każda karta zawiera listę artykułów z określoną zawartością. Lista artykułów tworzona jest za pomocą odsłon i widoków obrazu ułożonych w Linelayout. Kiedy klikam na tytuł, artykuł otwiera się ze szczegółami. Artykuły te są ładowane ze strony Drupal poprzez HTTP POST i moduł ViewJSON. Karty tworzone są za pomocą FragmentActivity i TabHost. Wszystko w porządku i działa dobrze do tego momentu.Jak odświeżyć zawartość zakładki fragmentów na przycisku kliknij
Mój problem polegał na tym, że chcę wykonać jeden przycisk odświeżania, który ma zostać umieszczony na kartach, a kiedy go kliknę, lista artykułów musi zostać odświeżona lub przeładowana, a otwarta zakładka musi być otwarta. Próbowałem zastąpić treść fragmentu tabulatora i ponownie go otworzyć, ale gdy kliknę na tytuł jednego artykułu, aby go otworzyć, zawartość karty pozostanie w stosie pod wszystkimi fragmentami. Wspominam, że po kliknięciu tytułu artykułu otwiera się jeden nowy fragment. Wysłałam id artykułów jako argument i w tym samym fragmencie otwieram treść artykułu.
Próbowałem z tym kodem, ale bez powodzenia.
Button btn_refresh = (Button) findViewById(R.id.btn_refresh);
btn_refresh.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String current_tab = mTabHost.getCurrentTabTag();
if(current_tab.contains("POPULARE")){
Fragment f;
f = new PopulareActivity();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.tot,f);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.commit();
}
if(current_tab.contains("RECOMANDATE")){
Fragment f;
f = new RecomandateActivity();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.tot,f);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.commit();
}
Dokładniej wchodzę na aplikacji, naciśnij kartę Karta2 (wyświetlić listę artykułów z Karta2), naciśnij przycisk odświeżania, otwartego jednego artykułu, naciśnij przycisk Wstecz na urządzeniu przenośnym i pokaż mi zawartość Karta2. Teraz wchodzę na zakładkę1 (i wyświetlam listę artykułów z zakładki1), otwieram jeden artykuł z listy tab1, pokaż mi, czego potrzebuję, i naciśnij przycisk wstecz na urządzeniu mobilnym. W tym momencie wyświetlana jest zawartość tab2 (lista artykułów z zakładki 2, od której nacisnąłem przycisk odświeżania.).
Aby otworzyć szczegóły artykule używam:
tv.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Fragment f;
f = new DetaliiActivity();
Bundle data = new Bundle();
data.putInt("id", nid);
f.setArguments(data);
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.tot,f);
ft.addToBackStack(null);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
}
});
Z góry dzięki za pomoc!
Czy możesz opracować nieco metodą odświeżania? Nie jestem pewien, jak to by było odświeżyć fragment nadal. – ChuckKelly
Metoda odświeżania może zawierać funkcje odświeżania elementów/danych itp. W fragmencie. To naprawdę nie robi nic z samym fragmentem, ale nie musi być ponownie tworzone, aby zaktualizować dane w nim. – NickL
Możesz również uzyskać dostęp do bieżącego fragmentu za pomocą ((SectionsPagerAdapter) mViewPager.getAdapter()). GetItem (mViewPager.getCurrentItem())) – yesildal