我建议只实现一个活动,并在内容框架中替换各种片段。你需要知道,这个例子包含了很多方法,你应该选择其中的一种 ;)
因此,拥有一个菜单和内容片段,你可以按照以下方式开始(也可参考
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) {
...
}
在菜单片段中,您可以根据用户的选择创建新的片段(与
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) {
...
}
最后,活动和菜单片段之间的粘合剂是
MenuFragment.switchFragment(Fragment fragment)
和
StartActivity.switchContent(final Fragment fragment)
,而菜单片段方法调用活动方法以替换内容帧中的内容片段(请参见示例中的
BirdMenuFragment
和
ResponsiveUIActivity
类)。
这只是您如何实现SlidingMenu以及如何在内容框架中替换片段的概述。当然还有一些挑战需要应对。
无论如何,我希望我能帮上一点忙...干杯!
应该没有
new。你说的
newFragment`是什么意思?我没有使用过。 - Trinimoncase
语句中切换片段,您当然也可以为活动启动意图 - 或者混合使用两者,例如case 2:Intent intent = new Intent(...); ... startActivity(intent); break;
。但是,使用片段绝对是推荐的方法。如果您有活动并且希望在所有活动中都有SlidingMenu,则必须在所有活动中实例化SlidingMenu - 最好在BaseActivity
中实现一次。但这有缺点,例如在您想要向菜单填充任何信息(例如指示器)的情况下。 - TrinimonswitchContent()
方法。因此,查看上面的代码,您还可以在那种情况下添加return:case 2 : Intent intent ...; return;
。switchFragment()
用于替换内容框架中的片段(请参见https://github.com/jfeinstein10/SlidingMenu/blob/master/example/res/layout/content_frame.xml中的布局),假设您仅使用一个活动,并在该活动内切换多个片段(即`StartActivity`)。您可以混合使用这两种方法,但是使用意图启动时,不涉及`switchContent()`。 - Trinimon