`

添加Fragment机制

 
阅读更多

配置(Configuration )改变是Android应用生命周期的一部分,如果发生了该事件(屏幕从横屏换行为竖屏),就会导致Activity被销毁然后重新创建。就算您在配置文件中设定Activity为竖屏显示的 也无法避免,应为Android应用配置改变的情况有很多种。

如果发生了这种情况,Fragment也会被销毁然后重新创建。如果您是在运行时(在Java代码中添加Fragment到Activity,不是在Activity的布局文件中声明的)创建的,则需要额外小心:

当Activity第一次创建的时候,您需要添加Fragment;当由于配置条件改变导致Activity被重新创建则无需再次添加Fragment(系统会自动添加Fragment)。

所以问题来了,您如何知道何时应该在onCreate函数中添加Fragment呢?

判断的方法就是检查savedInstanceState 参数,如果该参数为null说明是第一次创建,需要添加Fragment;如果不是null则无需添加。代码如下:

public class MyActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstnaceState);
        // Only add fragment if this is the initial Activity creation
        if (savedInstanceState == null) {
            FragmentManager fragmentManager =
                     getFragmentManager()
            FragmentTransaction fragmentTransaction =
                     fragmentManager.beginTransaction();
            ExampleFragment fragment = new ExampleFragment();
            fragmentTransaction.add(R.id.fragment_container, fragment);
            fragmentTransaction.commit();
        } else {
            // Don't add the fragment!
            // (and use savedInstanceState to restore Activity state)
        }
    }
}

如果您没有按照上面的方式添加Fragment,则您的应用可能会出现一种奇怪的现象,同样的Fragment添加了多次。 关于Fragment使用的更多文档请参考开发者指南

 

分享到:
评论

相关推荐

    根据数据动态添加ViewPager页数(Fragment)

    综上所述,动态添加ViewPager页数并结合Fragment管理页面是一种常见的Android开发技巧,它涉及到数据处理、适配器机制、事件监听和性能优化等多个方面。理解并掌握这一技术有助于构建更加灵活和响应式的应用界面。

    Android:从网络获取数据ViewPager动态添加Fragment,仿51job详情左右滑动看更多效果

    此外,可以利用缓存机制(如内存缓存和磁盘缓存)来存储已加载过的数据,避免重复请求。 8. **错误处理** 不要忘记处理可能出现的网络错误或数据解析异常,例如使用`Snackbar`或`Toast`显示错误信息,并提供重新...

    Fragment内嵌套Fragment

    在Android应用开发中,Fragment是Activity的一个模块化组件,它允许开发者在不重启Activity的情况下,动态地添加、移除或替换界面的一部分。"Fragment内嵌套Fragment"是一种常见且实用的设计模式,尤其在构建复杂...

    Android Fragment的简单使用(静态添加)

    2. **动态添加Fragment**:在运行时,可以通过FragmentManager和FragmentTransaction动态添加、替换或移除Fragment。例如: ```java FragmentManager manager = getSupportFragmentManager(); FragmentTransaction ...

    多个fragment嵌套,返回上级fragment例子

    你可以通过查看和运行这个项目,更直观地理解Fragment嵌套和回退机制的工作原理。 6. **最佳实践**: - 避免过多的Fragment嵌套,因为这可能导致性能下降和复杂的回退管理。 - 使用静态导入`androidx.fragment....

    实现静态、动态、添加、删除、隐藏、显示、替换Fragment事件

    添加Fragment通常涉及`FragmentTransaction`的`add()`方法,需要指定容器视图的ID和要添加的Fragment实例。 4. **删除Fragment**: 使用`FragmentTransaction`的`remove()`方法来删除Fragment,然后调用`commit()...

    Android Fragment实例

    3. **添加Fragment到Activity**: - 通过在XML布局文件中定义Fragment,或者在Activity的代码中使用FragmentManager和Transaction来动态添加和替换Fragment。 4. **Fragment通信**: - Fragment可以通过回调接口...

    Fragment与Activity使用Handler进行交互

    总结来说,Handler是Android中实现线程间通信的重要机制,它在Fragment和Activity的交互中扮演着关键角色。正确理解和使用Handler能帮助开发者构建高效、稳定的Android应用程序。在实际开发中,还应结合其他通信方式...

    FragmentDemo_4

    记得查看源代码,仔细研究每个类和方法,以及它们在不同场景下的应用,这对提高对Fragment机制的理解非常有帮助。同时,配合博客文章(http://blog.csdn.net/xuemengrui12/article/details/50465346)进行学习,可以...

    dynamic-fragment动态加载fragment

    在Android应用开发中,Fragment是Android SDK提供的一种组件,它允许开发者在Activity中添加多个界面片段,使得界面设计更加灵活。动态加载Fragment主要是指在运行时根据需要创建、添加、替换或移除Fragment,这对于...

    fragment活动栈单例

    在`onCreate()`方法中,我们可以通过检查当前Fragment是否已经存在来决定是否添加新的Fragment。如果不存在,我们就创建一个新的Fragment并将其添加到回退栈中。同时,我们还可以监听`onBackStackChanged()`事件,...

    点击退出返回上一个Fragment

    在Android应用开发中,Fragment是Activity的一个模块化组件,它可以在Activity中添加、移除或替换,用于构建灵活且复杂的用户界面。"点击退出返回上一个Fragment"这一主题涉及到Fragment的回退栈管理和用户交互。...

    android 控制fragment返回

    - `FragmentManager.addBackStack()`:在添加Fragment到回退栈时,可以指定一个标识,以便在`onOptionsItemSelected()`中判断并执行相应的操作。 5. **Transaction管理**: 在进行Fragment切换时,通常使用`...

    Fragment的介绍,以及Fragment与Activity之间的通信

    了解并熟练掌握Fragment的使用和与Activity的通信机制,能够帮助开发者构建更加复杂和动态的Android应用,提升用户体验。在实际项目中,根据需求选择合适的方法进行通信,保持代码的清晰和可维护性是非常重要的。

    fragment俩种管理方式

    1. 在布局文件中声明:静态管理是最简单的方式,直接在Activity的XML布局文件中添加<fragment>标签来创建和添加Fragment。例如: ```xml <fragment android:id="@+id/fragment_container" android:name=...

    Fragment详解和重用

    Fragment是Android应用开发中的一个重要组件,它是Android 3.0...通过深入理解Fragment的工作原理,熟练掌握其生命周期和通信机制,以及合理地重用和组织Fragment,开发者可以构建出更加高效、优雅的Android应用程序。

    FragmentDemo-10

    不过,FragmentDemo-10可能只展示了基本的添加和切换Fragment,没有涉及复杂的通信机制。 8. **注意事项** 在实际开发中,应确保处理好Fragment的生命周期,防止内存泄漏,并适当地保存和恢复Fragment的状态。此外...

    fragment demo

    总的来说,"fragment demo"是一个很好的学习和实践Android Fragment机制的实例,涵盖了Fragment的基本使用和高级特性,对于提升Android应用开发技能非常有帮助。通过深入研究这个项目,开发者可以更好地理解和掌握...

    Fragment实例二(源码)

    此外,为了在不同Fragment间共享数据,我们可以使用`Bundle`传递参数,或者利用`Fragment`之间的通信机制,如`setArguments()`和`getArguments()`,或者通过`Interface`回调的方式。 总结来说,Fragment是Android...

    activity加载fragment的demo

    在Activity的布局文件中,需要有一个可以添加Fragment的容器,通常是`FrameLayout`: ```xml android:id="@+id/fragment_container" android:layout_width="match_parent" android:layout_height="match_parent...

Global site tag (gtag.js) - Google Analytics