2013-05-03 78 views
2

我在我的項目Android的 - 如何初始化滑動菜單隻有一次

https://github.com/jfeinstein10/SlidingMenu

我加入這個菜單,我所有的活動中使用這種滑動菜單。這個滑動菜單在開始時調用片段。如何防止爲每個活動創建多個片段,並在Fragment已在後端堆棧中創建時調用?

我的每一個活動都延長我的BaseActivity,我initialzing在BaseActivity滑動這樣的菜單。

getSupportFragmentManager() 
    .beginTransaction().replace(R.id.detail, new DetailFragment()) 
    .commit(); 

由於

回答

1

我將(至少)試圖實現只有一個活性和內容框架內更換各種片段。你應該知道,例如包含一個你應該選擇不同的方法一個;)

因此,有一個菜單,你可以如下開始的內容片段(比較ResponsiveUIActivity太)。

public class StartActivity extends SlidingFragmentActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     ... 

     Fragment contentFragment = InitialFragment() 

     getSupportFragmentManager().beginTransaction() 
      .replace(R.id.content_frame, contentFragment).commit(); 

     getSupportFragmentManager().beginTransaction() 
      .replace(R.id.menu_frame, new MenuFragment()).commit(); 

     ... 
    } 

    public void switchContent(final Fragment fragment) { 
     // replace fragment in content frame 
     ... 
    } 

在菜單片段,您可以根據用戶選擇創建新的片段(比較BirdMenuFragment):

public class MenuFragment extends ListFragment { 

    @Override 
    public void onListItemClick(ListView lv, View v, int position, long id) { 
     Fragment newContent = null; 

     switch (position) { 
      case 1 : new ThisFragment(); 
        break; 
      case 2 : new ThatFragment(); 
        break; 
      case 3 : new AnotherFragment(); 
        break; 
     } 

     if (newContent != null) switchFragment(newContent); 
    } 

    private void switchFragment(Fragment fragment) { 
     // call StartActivity.switchContent 
     ... 
    } 

最後,活動和菜單片段之間的膠是MenuFragment.switchFragment(Fragment fragment)StartActivity.switchContent(final Fragment fragment)而菜單片段方法調用用於替換內容框架中的內容片段的活動方法(比較示例中的類BirdMenuFragmentResponsiveUIActivity)。

這只是你如何能實現SlidingMenu綱要,你怎麼可以在內容框架更換片段。當然還有一些挑戰需要解決。

無論如何,我希望我能有點幫助...乾杯!

+0

能否請您進一步解釋:)什麼是newFragment這裏如何更換片段的內容框架。 – dracula 2013-05-03 20:39:43

+1

看這一個:用於https://github.com/jfeinstein10/SlidingMenu/blob/master/example/src/com/slidingmenu/example/fragments/ResponsiveUIActivity.java'switchContent()'和這一個:HTTPS:/ /github.com/jfeinstein10/SlidingMenu/blob/master/example/src/com/slidingmenu/example/fragments/BirdMenuFragment.java用於'switchFragment()';另外我修正了這個問題:上面有'new contentFragment' - 應該沒有'new'。 'newFragment'是什麼意思?我沒有使用它。 – Trinimon 2013-05-03 21:09:12

+0

Okey,我現在明白了。在我的代碼中,我沒有不同的片段。我有活動。爲了檢查ListActivity是否擴展BaseActivity,我如何在ListActivity中切換內容? – dracula 2013-05-05 12:58:03