gpt4 book ai didi

android - ((ActivityName) getActivity()).FragmentName.methodInFragment(); - (ActivityName) 在做什么,它是如何工作的?

转载 作者:行者123 更新时间:2023-11-30 02:03:49 25 4
gpt4 key购买 nike

我这里有三个项目:一个名为 ActivityName 的基本 Activity 、一个从名为 FragmentName 的 Activity 调用的 fragment ,以及一个 dialogFragment从 fragment 中调用。

我想从 fragment 中的对话框中调用一个方法。我使用以下方法做到了这一点:

((ActivityName) getActivity()).fragmentName.methodInFragment();

我一直在尝试几种不同的解决方案,最后想到了这个。我明白发生了什么,但我不明白 (ActivityName) 在做什么。我的猜测是它将 getActivity 转换为实际的 Activity 类型,这样我就可以从它调用东西(比如我在其中声明的 fragment 的实例)。那是正在发生的事情还是我离开了?

这是否与我访问我在 XML 中定义的 TextView 时使用的类型相同。例如TextView myTextView = (TextView) findViewById(R.id.thetextview);?

最佳答案

这叫做转换。 getActivity() 返回一个 Activity 对象,使用 ((ActivityName)getActivity()) 您指定 getActivity() 实际上是一个对象ActivityName 类的。转换为特定类型允许您访问不属于父类(super class)的成员和方法 (public)。如果您定义了错误的类型转换,您将得到一个 ClassCastException

Is this the same type of thing that's use when I am accessing a TextView I've defined in XML. e.g. TextView myTextView = (TextView) findViewById(R.id.thetextview);?

是的。 findViewById 返回一个View,而你告诉View 实际上是一个TextView。如果不是 TextViewR.id.thetextviewImageButton 的 id,将其转换为 TextView 会导致 ClassCastException

关于android - ((ActivityName) getActivity()).FragmentName.methodInFragment(); - (ActivityName) 在做什么,它是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31059647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com