Android的 - 如何初始化滑动菜单只有一次

问题描述:

我在我的项目Android的 - 如何初始化滑动菜单只有一次

https://github.com/jfeinstein10/SlidingMenu

我加入这个菜单,我所有的活动中使用这种滑动菜单。这个滑动菜单在开始时调用片段。如何防止为每个活动创建多个片段,并在Fragment已在后端堆栈中创建时调用?

我的每一个活动都延长我的BaseActivity,我initialzing在BaseActivity滑动这样的菜单。

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

由于

我将(至少)试图实现只有一个活性和内容框架内更换各种片段。你应该知道,例如包含一个你应该选择不同的方法一个;)

因此,有一个菜单,你可以如下开始的内容片段(比较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