Bonjour !
Étudiant, je me forme actuellement au développement android, j'aurai besoin d'un peu d'aide. En effet, j'essaye de programmer une petite application qui contient un explorateur de fichier. L'application tourne correctement avec des Activity classique, mais je souhaite maintenant utiliser des fragments.
Voici la portion de code qui me pose problème:
Je souhaiterai donc savoir comment sauvegarder un objet de type java.io.File au moment du changement de configuration (changement de l'orientation de l'appareil dans mon cas) pour le récupérer au moment de la reconstruction de la vue.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120 public class ImportFragment extends Fragment implements OnItemClickListener { private FileAdapter fAdapter; private TextView position; private boolean quitterNav; private File courant; private File racine; private ListView listeFichiers; public boolean getQuitter(){ return this.quitterNav; } public File getCourant(){ return this.courant; } /*@Override public void onActivityCreated(Bundle savedInstanceState){ }/*/ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ RelativeLayout tmp = (RelativeLayout) RelativeLayout.inflate(this.getActivity(), R.layout.vue_import, null); this.listeFichiers = (ListView) tmp.findViewById(R.id.listeFichier); this.listeFichiers.setOnItemClickListener(this); this.position = (TextView) tmp.findViewById(R.id.sLocalisation); Log.e("blabla", ""+this.courant); if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){ if(savedInstanceState == null){ this.quitterNav = true; this.racine = Environment.getExternalStorageDirectory(); this.courant = this.racine; this.position.setText(this.courant.getAbsolutePath()); File[] lFichiersBrute = this.courant.listFiles(); ArrayList<File> lFichiers = new ArrayList<File>(); ArrayList<File> lDossiers = new ArrayList<File>(); for(File f : lFichiersBrute){ if(!f.isHidden()){ lFichiers.add(f); } } for(File f : lFichiers){ if(f.isDirectory()){ lDossiers.add(f); } } lFichiers.removeAll(lDossiers); this.fAdapter = new FileAdapter(this.getActivity(), lDossiers, lFichiers); this.listeFichiers.setAdapter(fAdapter); } else{ this.racine = Environment.getExternalStorageDirectory(); this.quitterNav = savedInstanceState.getBoolean("quitterNav"); File[] lFichiersBrute = this.courant.listFiles(); ArrayList<File> lFichiers = new ArrayList<File>(); ArrayList<File> lDossiers = new ArrayList<File>(); for(File f : lFichiersBrute){ if(!f.isHidden()){ lFichiers.add(f); } } for(File f : lFichiers){ if(f.isDirectory()){ lDossiers.add(f); } } lFichiers.removeAll(lDossiers); this.fAdapter = new FileAdapter(this.getActivity(), lDossiers, lFichiers); this.listeFichiers.setAdapter(fAdapter); } } else{ this.quitterNav = true; this.position.setText("Erreur : Impossible de lire la mémoire externe"); this.position.setGravity(Gravity.CENTER); } return tmp; } protected void onSavedInstanceState(Bundle outState){ outState.putBoolean("quitter", this.quitterNav); //Comment ajouter un objet File au Bundle ? }
Dans le premier cas où j’héritai d'une Activity j'utilisais la méthode "public Object onRetainNonConfigurationInstance ()" avec une classe personnalisée. Je n'arrive pas à trouver un processus similaire avec les fragments.
En vous remerciant d'avance !
Partager