我在选项卡选择中有一个带有不同片段的活动,我想覆盖后退按钮,以便它调用片段中的一个方法,将列表视图更新为父文件夹列表。现在我在主要活动中做了这个:
@Override
public void onBackPressed()
{
ActionBar actionbar = getActionBar();
if(actionbar.getSelectedTab().getPosition() == 0)
{
if(!fla.onBackPressed())
super.onBackPressed();
}
}
这在片段中:
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 是类中的全局字符串,引用列表视图中的当前父目录,每次打开文件夹时都会更新。
似乎当我按下后退按钮时 back_str 总是 = null
有人可以帮助我并告诉我解决这个问题的方法吗?
编辑:
我会尝试更好地解释我,我在片段中有一个列表视图,用于导航到手机的文件夹,从 /storage/ 开始,当我按下文件夹时,它会打开更新调用此方法的列表视图:
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();
}
现在,如果选择了后退按钮,我想返回到父文件夹,但是当我尝试从活动中调用片段的 onBackPressed 方法时,我得到了错误。我正在使用静态变量 string_str 将要更新列表的父文件夹的路径存储在我的片段中,但不知何故我无法使用相同的 updateListViewFolder 方法更新列表