Autore Topic: API 19 - isValidFragment  (Letto 861 volte)

Offline crbin1

  • Utente junior
  • **
  • Post: 61
  • Respect: +6
    • labeltodo
    • Mostra profilo
    • Do Androids Dream of Electric Sheep?
  • Dispositivo Android:
    Galaxy Nexus
API 19 - isValidFragment
« il: 14 Novembre 2013, 14:47:07 CET »
0
Secondo problema con KitKat dopo quello esposto qua http://www.anddev.it/index.php/topic,12582.msg65754/topicseen.html#msg65754.

Allora provando la mia applicazione e andando nelle preference ho un errore

Citazione
Subclasses of PreferenceActivity must override isValidFragment(String) to verify that the Fragment class is valid! com.crbin1.labeltodo.ActivityPreference has not checked if fragment com.crbin1.labeltodo.StockPreferenceFragment is valid

Nella documentazione ho trovato

Citazione
protected boolean isValidFragment (String fragmentName)

Added in API level 19

Subclasses should override this method and verify that the given fragment is a valid type to be attached to this activity. The default implementation returns true for apps built for android:targetSdkVersion older than KITKAT. For later versions, it will throw an exception.

Io ho sovrascritto il metodo con un semplice

Codice (Java): [Seleziona]
@Override
protected boolean isValidFragment (String fragmentName) {
        return true;
}

e funziona, ma così ha poco senso, come si controlla la validità di un Fragment?

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +152
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:API 19 - isValidFragment
« Risposta #1 il: 14 Novembre 2013, 16:53:05 CET »
0
Se tu guardi la documentazione, trovi questi due intent EXTRA.
PreferenceActivity | Android Developers
PreferenceActivity | Android Developers

When starting this activity, the invoking Intent can contain this extra string to specify which fragment should be initially displayed.
Starting from Key Lime Pie, when this argument is passed in, the PreferenceActivity will call isValidFragment() to confirm that the fragment class name is valid for this activity.

Quindi questo metodo serve per verificare che il nome del fragment effettivamente è quello che ti aspetti.

Offline crbin1

  • Utente junior
  • **
  • Post: 61
  • Respect: +6
    • labeltodo
    • Mostra profilo
    • Do Androids Dream of Electric Sheep?
  • Dispositivo Android:
    Galaxy Nexus
Re:API 19 - isValidFragment
« Risposta #2 il: 14 Novembre 2013, 17:33:30 CET »
0
Se tu guardi la documentazione, trovi questi due intent EXTRA.
PreferenceActivity | Android Developers
PreferenceActivity | Android Developers

When starting this activity, the invoking Intent can contain this extra string to specify which fragment should be initially displayed.
Starting from Key Lime Pie, when this argument is passed in, the PreferenceActivity will call isValidFragment() to confirm that the fragment class name is valid for this activity.

Quindi questo metodo serve per verificare che il nome del fragment effettivamente è quello che ti aspetti.

Ah ok, trovo con poco senso rendere obbligatorio l'override ma va bene. Tra l'altro nei cambiamenti di Android 4.4 questo non mi pare neppure inserito quindi uno se ne deve accorgere perché l'app va in errore...

Ma che la nuova versione non l'hanno più chiamata Key Lime Pie non se ne sono accorti?  :D