我在项目中使用此滑动菜单
https://github.com/jfeinstein10/SlidingMenu
我将此菜单添加到我的所有活动中。这个滑动菜单在打开时调用Fragment。如何防止为每个活动创建多个片段,如果已经在后栈创建片段,则调用它?
我的每个活动都在扩展我的BaseActivity,我正在BaseActivity初始化这样的滑动菜单。
getSupportFragmentManager()
.beginTransaction().replace(R.id.detail, new DetailFragment())
.commit();
由于
答案 0 :(得分:1)
我会(至少)尝试仅实现一个活动并替换内容框架中的各种片段。您应该知道该示例包含您应该选择的各种方法 one ;)
所以有一个菜单和内容片段,你可以从下面开始(比较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以及如何替换内容框架中的片段的概述。当然还有一些挑战需要解决。
无论如何,我希望我能帮助一下......干杯!