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

标签 android fragment slidingmenu

我在我的项目中使用这个滑动菜单

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 方法(比较示例中的类 BirdMenuFragmentResponsiveUIActivity)。

这只是关于如何实现 SlidingMenu 以及如何替换内容框架中的 fragment 的概述。当然,还有一些挑战需要应对。

无论如何,我希望我能有所帮助......干杯!

关于Android - 如何只初始化一次滑动菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16365749/

相关文章:

android - Gradle 总是执行任务

android - 如何在 MPAndroidChart PieChart 中将自定义浮点值设置为 y 轴

java - 用于选项卡式菜单的 Android Fragments

android - 子 fragment 正在自动销毁

android - 在点击监听器上设置滑动菜单

java - ArrayList<object> inside ArrayList<anotherObject> inside a class

android - 如何在Kotlin android中的扩展函数中访问同名的类成员

java - 避免/阻止 fragment 在更改选项卡时刷新

java - Android 中的左右滑动 webview

java - 执行 LEFT_RIGHT 滑动菜单时的奇怪行为