我有一個在選項卡中有不同片段的活動,我想覆蓋後退按鈕,以便它調用將列表視圖更新到父文件夾列表的片段中的方法。 現在我的主要活動做出這樣的:覆蓋片段中的後退按鈕
@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
有人可以幫助我,告訴我的方式,我可以解決這個問題?
編輯:
我會試着更好地解釋,我已經片段內一個ListView,我用它來導航到手機的文件夾,從/存儲/啓動時,我按下一個文件夾它打開更新列表視圖調用此方法:
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方法
如何back_str初始化? – 2013-04-27 16:04:19
根據您提供的信息很少,如果您將back_str作爲參數傳遞給函數進行修改,則這不適用於java。改用public void方法來設置值。 – Neoh 2013-04-27 16:12:12
back_str被初始化爲一個全局變量並且等於「/ storage /」。問題仍然不在於我如何傳遞變量,因爲else子句從未被調用過。在我調用片段的方法時(onBackPressed),在活動中以某種方式它總是返回「/ storage /」而不是另一個路徑,因爲在打開另一個文件夾時應修改back_str – Pievis 2013-04-28 09:07:53