2016-10-01 56 views
1

我正在嘗試製作一個以DrawerActivity爲主要活動的應用程序。我在其中實現了8個片段,這些片段對應於抽屜中的每個項目。現在,我遇到的問題是,每當我嘗試按下後退按鈕返回片段中的DrawerActivity時,我最終都會退出應用程序。我一直在論壇上搜索三天,並沒有找到任何解決方案。非常沮喪,我愚蠢地刪除了我的代碼,所以我現在無法真正顯示它。任何人都可以簡單地向我解釋我應該如何使用後退按鈕退出片段,然後返回到我的主要活動?如何使用後退按鈕退出片段並返回到我的抽屜活動?

當前場景: DrawerActivity包含八個片段,彼此獨立。我們稱它們爲片段A到H.當我到片段A時,我應該能夠打開navigationDrawer並且從B到H的任何其他片段前進。但是,按下後退按鈕時,我也應該能夠返回到抽屜活動的主頁面。

我試過哪些沒有用的東西是
1.使用onBackPressed和popBackStack。
2.創建自定義偵聽器。
3.使用fragmentTransaction。

+0

通過'回到你的意思是要回第一片段或到活動抽屜活動的主要page'? –

+0

我的意思是回到活動,因爲片段是活動的一部分,對吧?例如,如果我在活動的頁面上顯示「HELLO」,那麼我會轉到該片段,然後向後按,我應該可以再次看到「HELLO」。 – CannonBaller9Pin

+0

@ CannonBaller9Pin您是否在xml文件中定義了「HELLO」TextView(或用於顯示文本的任何View)? –

回答

0

您是否嘗試過重寫onBackPressed()而不調用超類方法? 「)super.onBackPressed(」(這樣就防止面漆()被調用。)

@Override 
public void onBackPressed() { 
    //show Fragment A 
} 

調用它沒有,它應該工作。

+0

我不想回到當前片段的另一個片段。我想回到啓動片段的活動。 – CannonBaller9Pin

0

我不敢相信我是多麼愚蠢。當我突然意識到抽屜活動中的第一個片段始終是默認片段時,我正在手機上使用我的Gmail應用程序,並且該應用程序應始終在後退按鈕按下時恢復爲它。我當時的想法是,當按下後退時,抽屜活動會回到原來的狀態,但我沒有說明碎片是活動本身的一部分。 謝謝大家,試圖理解我的問題,這根本不是問題......看起來,儘管我自己,我仍然學到了一些東西。

0

您必須將片段添加到Android後退堆棧是這樣的:

getSupportFragmentManager() 
      .beginTransaction() 
      .replace(R.id.your_container,fragment,fragment.TAG) 
      .addToBackStack(null) 
      .commit(); 
相關問題