- Fél évszázados Apple jubileumot ünnepel a 8BitDo ízig-vérig fém billentyűzete
- Nem csak nagy, de gyors is az LG önerőből AI felskálázást biztosító monitora
- Kötelező frissítésnek számít a Microsoft legújabb csomagja a Windows 11-hez
- Szó szerint kifüstöli az AI-t a Közel-Keleten Irán
- Harminc százalékos áremelésnél állhat meg az Intel
- Milyen TV-t vegyek?
- Azonnali alaplapos kérdések órája
- OLED TV topic
- 3D nyomtatás
- Kormányok / autós szimulátorok topikja
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Milyen videókártyát?
- Apple asztali gépek
- Nem csak nagy, de gyors is az LG önerőből AI felskálázást biztosító monitora
- Google Nexus 7 (2013) - ránc: felvarrva
Új hozzászólás Aktív témák
-
Karma
félisten
válasz
#39560925
#3218
üzenetére
Azt semmiképp se tartom jó ötletnek, hogy a MainActivity közvetlenül ismerje az ExceptionsFragment példányt. Mivel a ViewPager is virtualizál (azaz a ListViewhoz hasonlóan csak a látható vagy szomszédos viewkat tartja életben), elég kusza helyzetek alakulhatnak ki.
Hogy ezt hogyan kerüld el, van pár lehetőség.
Az első a klasszikus jávás Listener minta. Az activityben definiálsz egy Listener interfészt, amit a fragment megvalósít, valamint egy kis ceremóniát, hogy fel lehessen rá iratkozni. A fragment onAttach metódusában regisztrál, onDetachban pedig deregisztrál - ameddig össze van kötve, az activity tud neki jelezni. Mondjuk a konkrét activity osztályt is elfedném akkor már.
ExceptionChangeListener.java:
public interface ExceptionChangeListener {
void onExceptionsChanged();
}ExceptionSource.java:
public interface ExceptionSource {
boolean addExceptionChangeListener(ExceptionChangeListener listener);
boolean removeExceptionChangeListener(ExceptionChangeListener listener);
}MainActivity.java:
public class MainActivity extends AppCompatActivity implements ExceptionSource {
private final Set<ExceptionChangeListener> mListeners = new HashSet<ExceptionChangeListener>();
...
public boolean addExceptionChangeListener(ExceptionChangeListener listener) {
return mListeners.add(listener);
}
public boolean removeExceptionChangeListener(ExceptionChangeListener listener) {
return mListeners.remove(listener);
}
... amikor módosítottad a listát, hívd meg ezt ...
private void notifyListeners() {
for (ExceptionChangeListener listener : mListeners) {
listener.onExceptionsChanged();
}
}
}ExceptionsFragment.java:
public class ExceptionsFragment extends Fragment implements ExceptionChangeListener {
@Override
public void onAttach (Activity activity) {
super.onAttach(activity);
if (activity instanceof ExceptionSource) {
((ExceptionSource)activity).addExceptionChangeListener(this);
}
}
@Override
public void onDetach() {
if (getActivity() instanceof ExceptionSource) {
((ExceptionSource)getActivity()).removeExceptionChangeListener(this);
}
super.onDetach();
}
@Override
public void onExceptionsChanged() {
adapter.notifyDataSetChanged();
}
}Huh, ez elég hosszú lett. A másik kettőbe inkább nem megyek bele így nyilvánosan kód szinten.
A második az lenne, hogy a fragmented onAttach/onDetach időben egy BroadcastReceivert indít el, az activity pedig Intenteket dobál, ha változás van. Ez lehet közvetlenül a sendBroadcast metódussal, vagy LocalBroadcastManagerrel. Lazább csatolás, de elég sok ceremónia.
A harmadik pedig egy event bus bevezetése (pl. Otto), ahol a logika ugyanaz mint a másodikban, csak kevesebb extra kód (eltekintve a lib dependenciától). Én így 2015-ben egyébként ezt az utat javaslom.
Új hozzászólás Aktív témák
- Ausom DT2 Pro elektromos roller
- Lenovo M720s Core i5 9500 // 16GB // 256GB SSD számla + gari - több db elérhető
- 0perces SAMSUNG DDR5 6400MHz vadiúj 2x16GB memória 1 év garancia (6400B)
- AMD Phenom II X4 B95 processzor
- 15.gen! Intel Core ULTRA 9 285K (24mag!) +32GB DDR5 kit +ASROCK Z890 PRO-A! GAR/SZÁMLA (Te nevedre)!
- Samsung Galaxy S23 FE 128GB, Kártyafüggetlen, 1 Év Garanciával
- Xiaomi Redmi Note 12 Pro+ 256GB, Kártyafüggetlen, 1 Év Garanciával
- Apple iPhone 13 /128GB / Kártyafüggetlen / 12Hó Garancia / Akku: 100% Után gyártott Kijelző
- ÚJ Apple Airpods Pro 3 - www.stylebolt.hu - 1 Év Apple garancia - 27 százalékos Áfá-s száma !!!!
- Számítógép javítás Budapest Laptop szerviz WiFi és router beállítás
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

