我在我的项目中使用这个滑动菜单
https://github.com/jfeinstein10/SlidingMenu
我正在将此菜单添加到我的所有 Activity 中。这个滑动菜单在打开时调用了一个 fragment 。如果 fragment 已在后台堆栈中创建,如何防止为每个 Activity 创建多个 fragment 并调用?
我的每个 Activity 都在扩展我的 BaseActivity,并且我在 BaseActivity 中像这样初始化滑动菜单。
getSupportFragmentManager()
.beginTransaction().replace(R.id.detail, new DetailFragment())
.commit();
谢谢
最佳答案
我会(至少)尝试只实现一个 Activity 并替换内容框架中的各种 fragment 。您应该知道该示例包含多种方法,您应该选择一种 ;)
因此,有了菜单和内容 fragment ,您可以按如下方式开始(也比较 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
...
}
在菜单 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) {
// call StartActivity.switchContent
...
}
最后, Activity 和菜单 fragment 之间的粘合剂是 MenuFragment.switchFragment(Fragment fragment)
和 StartActivity.switchContent(final Fragment fragment)
而菜单 fragment 方法调用用于替换内容框架中内容 fragment 的 Activity 方法(比较示例中的类 BirdMenuFragment
和 ResponsiveUIActivity
)。
这只是关于如何实现 SlidingMenu 以及如何替换内容框架中的 fragment 的概述。当然,还有一些挑战需要应对。
无论如何,我希望我能有所帮助......干杯!
关于Android - 如何只初始化一次滑动菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16365749/