上一篇博文讲的是直接在layout中的xml文件中声明fragment,用android:name=""指明了在layout中药实例化的fragment类,当系统创建这个activity layout时,它实例化每一个在layout中声明的fragment,并调用每一个对应fragment类的onCreateView()方法,来获取每一个fragment的layout,系统将从fragment类返回的VIew直接插入到fragment元素所在的地方。
第二种添加fragment的方法,使用FragmentManager将fragment添加到一个已存在的ViewGroup。只需要在指定一个放置fragment的ViewGroup,当activity运行的任何时候,都可以将fragment添加到activity layout。为了在activity中操作fragment的添加、删除、或替换一个fragment等,要用到FragmentTransaction。
这种情况下,要再操作fragmeng布局文件中的组件,就不可以在MainActivity中直接用findViewById方法提取了(只有在main.xml文件中直接声明的fragment可以用),不然会报空指针错误,你可能会想到用inflater,效果是一样的,就是在MainActivity中要拿到该布局文件的View。
官网有这样一个小实例:
https://developer.android.com/training/basics/fragments/communicating.html
要实现这样的交互,步骤如下:
首先在RightFragment类中定义一个接口和一个接口里面的方法:
public interface MyListener{ public void onViewItemClick(View v); }
然后定义一个接口类的引用:MyListener listener;
在RightFragment的onAttach()方法中给listener这个引用赋个值,不然会出讨厌的nullpointerexception哦
@Override public void onAttach(Activity activity) { super.onAttach(activity); listener = (MyListener)activity; }
在MainActivity类中实现MyListener这个接口,实现里面的方法,这样在RightFragment类中直接用
listener.onViewItemClick(view);将该类的view传过去,在MainActivity的实现方法函数中用v.findViewById(),就可以拿到任何RightFragment布局中的组件。
实现效果:
附上源代码:
相关推荐
本实例"Fragment实现tab"主要展示了如何使用Fragment和FragmentTabHost来创建一个带有标签切换功能的界面。接下来,我们将详细讨论Fragment以及如何使用它们来实现tab切换效果。 Fragment是Android 3.0(API级别11...
List<Fragment> fragments = new ArrayList<>(); // 添加或替换Fragment实例 MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager(), fragments); viewPager.setAdapter(adapter); tabLayout....
这个“Fragment实现新闻阅读实例”旨在教你如何利用Fragment构建一个类似新闻阅读的应用场景。我们将深入探讨Fragment的基本概念、创建与管理以及在实际应用中的使用技巧。 首先,Fragment是Android系统为了应对大...
List<Fragment> fragments = new ArrayList<>(); fragments.add(new PageFragment()); fragments.add(new PageFragment()); PageAdapter adapter = new PageAdapter(getSupportFragmentManager(), fragments); ...
Fragment之间的交互是Android开发中的一个重要知识点,尤其在设计复杂界面和实现动态布局时,这种交互显得尤为重要。下面将详细讨论Fragment之间的交互,包括基本的通信方式、使用Bundle传递数据、事件总线以及最佳...
在Android应用开发中,Fragment是Android SDK提供的一种组件,它允许开发者在Activity中划分界面的各个部分,使得界面更加模块化。Fragment可以独立地进行生命周期管理,并且可以在不同的屏幕配置变化下保持状态,如...
List<Fragment> fragments = new ArrayList<>(); fragments.add(new FragmentTab1()); fragments.add(new FragmentTab2()); MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager(), ...
在Android应用开发中,Fragment是Android SDK中的一个重要组件,它被设计用来支持多屏幕适配和增强用户界面的模块化。Fragment允许开发者将应用程序的功能或UI部分分解为独立的、可重用的组件,这些组件可以在不同的...
在Android应用开发中,Fragment是实现界面动态组合和交互的重要组件。然而,当涉及到多个Fragment之间的切换时,可能会遇到一个问题:每次切换时,Fragment的布局可能会被重新实例化,导致用户体验下降,例如丢失...
在平板电脑等大屏幕设备上,Fragment使得开发者可以将一个Activity拆分成多个可独立交互的部分,而在手机等小屏幕设备上,它们则可以帮助构建更复杂、可重用的界面。本实例“炫酷Fragment”将深入探讨如何利用...
在Android应用开发中,Fragment和Activity是两个核心组件,它们共同构建了用户界面。Fragment代表一个可重用的UI部分,而Activity则是程序中的一个窗口,它可以包含一个或多个Fragment。Fragment与Activity之间的...
2. **数据绑定**:在`PagerAdapter`的`getItem()`方法中,根据当前页的索引创建对应的`Fragment`实例,并传入需要的数据。例如,创建不同聊天对话的`Fragment`时,可以将好友ID或群组ID作为参数传递。 3. **页面...
综上所述,通过使用Android的Viewpager2和Fragment,我们可以轻松实现微信式的滑动界面。Viewpager2提供了高效、灵活的页面管理,而Fragment则让内容呈现变得简单。在实际开发中,我们还可以结合其他组件和设计模式...
在XML布局文件中,可以使用`<fragment>`标签将Fragment嵌入到Activity布局中,而通过代码添加则需要使用`FragmentManager`和`FragmentTransaction`。 当涉及到Fragment之间的切换时,通常会用到`...
List<Fragment> fragments = new ArrayList<>(); fragments.add(new FragmentOne()); fragments.add(new FragmentTwo()); // 创建PagerAdapter MyPagerAdapter adapter = new MyPagerAdapter...
在Android开发中,"VIewPager+Fragment实现仿微信界面+(BadgView)数字提醒"是一个常见的需求,它涉及到UI设计、页面滑动切换以及通知提醒的实现。下面将详细讲解这一主题的相关知识点。 首先,ViewPager是Android ...
在本篇文章中,我们将深入探讨如何通过Handler机制来实现Fragment与Activity之间的交互,并能互相改变彼此的用户界面。 首先,理解Handler机制是关键。Handler是Android中用于线程间通信的一种方式,它允许我们在...
5. **布局管理**:Fragment可以嵌入在一个布局文件中,例如在`<fragment>`标签中指定Fragment类和布局参数。或者,也可以在代码中动态添加Fragment到一个已经存在的ViewGroup中。 6. **Fragment的通信**:Fragment...
private List<Fragment> fragmentList = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main)...