2017-10-15 13 views
1

Je voudrais comprendre quelque chose du fragment Android docs suivants: Android fragment docsQuel est le deuxième paramètre dans savedInstanceState.getInt?

Dans l'exemple à la fin de la page, le mCurCheckPosition int est enregistré dans un paquet comme « curChoice »:

@Override 
    public void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     outState.putInt("curChoice", mCurCheckPosition); 
    } 

Cependant, au début de l'exemple, lors de la vérification et éventuellement récupérer « curChoice », il y a un second paramètre « 0 » qui est fourni:

if (savedInstanceState != null) { 
      // Restore last state for checked position. 
      mCurCheckPosition = savedInstanceState.getInt("curChoice", 0); 
     } 

Quelle est e est-ce que zéro fait là? Sûrement le point de référence "curChoice" est de récupérer la valeur qui a été enregistrée sous elle en premier lieu?

+0

Lorsque la valeur n'existait pas, elle ne renverra pas null .Et elle retournera le deuxième paramètre – KeLiuyue

Répondre

3

Qu'est-ce que ce zéro fait là?

En citant the documentation, il s'agit de la "valeur à retourner si la clé n'existe pas".

Le point de référence de "curChoice" est-il de récupérer la valeur qui a été enregistrée en premier lieu?

Oui, et dans ce cas, la valeur par défaut semble être superflue. En général, la valeur par défaut est pour les cas où la clé est conditionnellement ajoutée au Bundle, de sorte que le consommateur du Bundle peut gérer correctement le cas où la clé n'a pas été ajoutée.

0

C'est la valeur par défaut à affecter à "mCurCheckPosition" dans le cas où il n'y a pas de clé "curChoice" dans savedInstanceState. Pensez-y comme un cas où le fragment est restauré (donc savedInstanceState ne sera pas nul) mais il n'y a pas de "curChoice".

2

Le point de référence de "curChoice" est-il de récupérer la valeur qui a été enregistrée en premier lieu?

Je lui ai répondu lui: Oui, l'intention des développeurs est clair pour obtenir la valeur enregistrée dans savedInstance, mais Il peut y avoir la situation:

clé, étant donné pour récupérer la valeur = clé , pour insérer les données dans savedInstance

donc développeur aussi fournir une valeur par défaut (O dans votre cas) qui est utilisé pour empêcher de pointeur nULL exception