java - 如何从另一个布局的片段中查找ViewById,而不是作为根布局膨胀的那个?
问题描述
我正在使用带有 ViewPager 的 Fragment,我需要从我的 Fragment 在 ViewPager 中设置文本,但我无法这样做,因为我不断得到:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
这就是我从 ViewPager 的 XML 文件中初始化 TextViews 的方式:
View root = inflater.inflate(R.layout.fragment_library, container, false);
.
.
contentHeading = root.findViewById(R.id.content_heading);
contentBody = root.findViewById(R.id.content_body);
.
.
return root;
解决方案
无法从子布局直接访问。一个简单的方法是使用接口。您可以在 Fragment 构造函数中定义一个接口,然后在承载 viewPager 的根 Fragment 中实现它。
interface SomeInterface
{
public void callback (Type xxx)
}
父片段必须实现接口来监听任何回调
ParentFragment implements SomeInterface
{
...
@override
public void callBack(Type xxx)
{
//Change view pager
}
}
然后将此片段作为侦听器传递给您的 viewpager 构造函数和 childFragment 构造函数。
推荐阅读
- keycloak - 如何在 Quarkus (IDP: Keycloak) 中使用具有单个领域的多个 OIDC 客户端。使用 Token 而不是 RoutingContext 的路径的多租户支持
- verilog - 如何解决 ModelSIM 中的“未解析的 defparam 参考”错误?
- virtual-machine - 增加虚拟机的磁盘空间
- automapper - 有没有办法在 BLL 中实现 AutoMapper,与 Web 应用程序层分开?
- docker - docker可以连接到主机的localhost,但不能连接到主机网络中其他机器的本地ip
- sql - 运算符不存在:整数 + 区间
- java - 从不同的类调用布尔值
- python - 加速熊猫滚动引用另一个数据框
- java - 在导航抽屉上使用编辑文本的日期时间选择器不起作用
- reactjs - 了解在 redux saga 工作中生效吗?