2013-03-11 112 views
0

因爲我必須爲我的應用程序做一個自定義菜單,所以我創建了一個片段,它在我的應用程序底部就像一個操作欄一樣起作用!framelayout如何獲取內容?

但我與堆棧有衝突(按下後退按鈕時)。

我應該如何編程以下方法?

public void changerContenu(int frameLayout, Fragment frag, boolean ajouterAuStack) 
{ 
    if(R.id.frameContent != frag.getId()) 
// * if the current displaying 
// fragment in the layout is the same as the one that I received in param#2 (frag), 
// then don't do anything. 
    { 
     ft = fragmentManager.beginTransaction(); 

     ft.replace(frameLayout, frag); 
     if(ajouterAuStack) 
      ft.addToBackStack(null); 

     ft.commit(); 
    } 
} 

我知道我的「如果」沒有任何意義,現在,試圖找出如何來預期的結果:(現在,當我訪問片段一次(和它推入堆棧)我不能在我的「自制操作欄」中使用我的按鈕重新訪問它,直到我按下後退按鈕幾次來清理堆棧。

我只想在我的堆棧中不重複項目,如果單擊幾次我的菜單上的相同按鈕...

謝謝你們!

回答

0

以供將來參考,我得到它的工作是這樣:

public void changerContenu(int frameLayout, Fragment frag, boolean ajouterAuStack, String tag) 
{ 
    ft = fragmentManager.beginTransaction(); 

    ft.replace(frameLayout, frag); 
    if(ajouterAuStack && (fragmentManager.getBackStackEntryCount() == 0 
      || fragmentManager.getBackStackEntryAt(fragmentManager.getBackStackEntryCount()-1).getName() != tag)) 
     ft.addToBackStack(tag); 

    ft.commit(); 
} 
0

我想更好地理解這個問題。

你有一個像操作欄一樣的片段。如果片段已經顯示,你不想做任何事情;否則,你想顯示它。在什麼情況下你想回去,會發生什麼?

請注意,底部的單個操作欄不適合典型的Android設計。用戶可能不知道如何使用您的應用程序。我很想知道爲什麼常規的ActionBar不適合你。

+0

我曾用一個動作條,但我的工作,公司希望有一個特別的設計,我不能用一個動作條來代表它。所以我將它設計成一個片段,就像一個「標籤菜單」。 我有兩個frameLayers,一個用我的菜單(比方說A),另一個用於顯示我的內容(B)。 如果我在frameLayer A的菜單片段中點擊10次我的按鈕之一,它會執行我在第一篇文章中顯示的代碼的10倍。我不希望這樣,因爲它會在後臺堆棧中添加10x片段,並且我必須點擊「返回」10次才能離開這個片段。 希望它有幫助! – Shinnyx 2013-03-12 14:27:30