J'ai une activité avec différents fragments dans la sélection de l'onglet, je souhaite remplacer le bouton de retour afin qu'il appelle une méthode dans le fragment qui met à jour la liste dans la liste des dossiers parents. Pour l'instant, j'ai fait cela dans l'activité principale:bouton de remplacement dans le fragment
@Override
public void onBackPressed()
{
ActionBar actionbar = getActionBar();
if(actionbar.getSelectedTab().getPosition() == 0)
{
if(!fla.onBackPressed())
super.onBackPressed();
}
}
Et ce dans le fragment:
public boolean onBackPressed()
{
if(back_str.equals(MAIN_POINT)){
Log.v("A", "BACK FIRST" + back_str);
return false;
}
else
{
Log.v("A", "BACK PREMUTO");
updateListViewFolder(back_str);
return true; //torna indietro nella view
}
}
back_str est une chaîne globale dans la classe faisant référence au répertoire parent en cours dans le listview et il est mis à jour chaque fois que j'ouvre un dossier.
semble que lorsque j'appuie sur le bouton de retour back_str est toujours = null
quelqu'un peut me aider et dites-moi une manière que je peux résoudre ce problème?
EDIT:
Je vais essayer de me expliquer mieux, j'ai un listview à l'intérieur du fragment que j'utiliser pour naviguer dans le dossier du téléphone, à partir de/stockage/quand je presse un dossier, il ouvre la mise à jour du listview appelant cette méthode:
public void updateListViewFolder(String newPath)
{
ArrayList<Song> songsListTMP = new SongManager().getPlayList(newPath); //aggiungo tutte le canzoni
songsListData.removeAll(songsListData);
//AGGIUNGO LA CARTELLA PRECEDENTE
File here = new File(newPath);
back_str = here.getParent();
Log.v("A", "S:"+back_str);
Song back = new Song(back_str, true); //Sono directory
songsListData.add(back);
for(int i = 0; i < songsListTMP.size(); i++)
{
Song song = songsListTMP.get(i);
songsListData.add(song); //tengo un attimo separate
}
for(File dir : here.listFiles())
{
if(dir.isDirectory() && dir.canRead()){
Song sdir = new Song(dir.getPath(), true); //Sono directory
songsListData.add(sdir);
}
}
getListView().invalidateViews();
}
maintenant, je veux revenir au dossier parent si le bouton de retour est sélectionné, mais en quelque sorte j'obtiens des erreurs lorsque je tente d'appeler la méthode onBackPressed du fragment de l'activité . J'utilise une variable statique string_str pour stocker dans mon fragment le chemin du dossier parent avec lequel je veux mettre à jour la liste, mais je ne peux pas mettre la liste à jour avec la même méthode updateListViewFolder
Comment est back_str initialisés? –
En fonction de la quantité d'informations que vous avez fournie, si vous transmettez back_str en paramètre à une fonction pour la modifier, cela ne fonctionnera pas dans java. Utilisez une méthode void publique pour définir la valeur à la place. – Neoh
back_str est initialisé en tant que variable globale et est égal à "/ storage /". Le problème n'est toujours pas de savoir comment je passe la variable car la clause else n'est jamais appelée. D'une certaine manière dans l'activité quand j'appelle la méthode du fragment (onBackPressed) il retourne toujours "/ storage /" au lieu d'un autre chemin puisque back_str devrait être modifié quand j'ouvre un autre dossier – Pievis