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)
而菜单片段方法调用用于替换内容框架中的内容片段的活动方法(比较示例中的类BirdMenuFragment
和ResponsiveUIActivity
)。
这只是你如何能实现SlidingMenu纲要,你怎么可以在内容框架更换片段。当然还有一些挑战需要解决。
无论如何,我希望我能有点帮助...干杯!
能否请您进一步解释:)什么是newFragment这里如何更换片段的内容框架。 – dracula 2013-05-03 20:39:43
看这一个:用于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
Okey,我现在明白了。在我的代码中,我没有不同的片段。我有活动。为了检查ListActivity是否扩展BaseActivity,我如何在ListActivity中切换内容? – dracula 2013-05-05 12:58:03