gpt4 book ai didi

java - 从 fragment 调用 Activity 使用接口(interface),但是为什么呢?

转载 作者:行者123 更新时间:2023-11-30 05:07:37 25 4
gpt4 key购买 nike

您好我是一个初学者,我想从一个片段中调用一个活动。
但是我发现最好的方法是在viewholder类内部创建一个接口。
我只是想知道为什么这样做。
最好对其进行清晰的解释。

最佳答案

您要问的是所谓的回调接口。

此接口的唯一目的是通知代码的其他部分特定事件已发生,并允许您响应该事件。

您应该已经在Android开发中经常看到这些类型的接口,例如,OnClickListener是用于检测何时“单击”视图的回调接口。

继续上面的示例,当您使用view.setOnClickListener(listener)时,实际上是将响应传递给View,并告诉它:“嘿,当您运行代码并到达被“单击”的部分时,请运行我的代码太。”

因此,有了这个快速的解释,让我们回答您的问题。

首先,我想指出,从Fragment启动Activity的最好方法就是在Fragment内调用startActivity()。无需使用界面或其他任何东西。

您之所以读到这是启动Activity的最佳方法的原因是,该Activity是从ViewHolder内部启动的。

在Android中,创建许多组件时都考虑到了重用。我的意思是RecyclerView

RecyclerView是用于显示可滚动列表或数据网格的组件。请注意,RecyclerView并非仅针对特定项目而设计,但实际上它是一个足够灵活且强大的组件,几乎可以被任何开发人员用于任何项目。

它是如何做到的?通过使其自身具有功能,但没有一个功能紧密地绑定到特定项目。例如,想象一下如果使用预设的深色背景和特定的视图布局创建RecyclerView而没有提供更改预设的方法会发生什么。

相当严格吧?这就是为什么RecyclerView如此灵活地创建非常重要。

回到回调接口。

就像我之前说过的那样,Android开发中的大多数组件在开发时都考虑到了重用。当然,需要某些预设值,但是您应该使应该灵活的部分变得灵活。

因此,像ViewHolders这样的组件可能会被应用程序中的其他适配器重用。适配器之类的组件可能会被您应用中的其他RecyclerView重用。为了使其可重用,您不能编写任何太具体的东西来限制它在特定类中的使用。

所以我给你两种情况:


您在ViewHolder中有一个可单击的视图,并将其编码为直接启动“ SecondActivity.class”。现在,只要单击该视图,它将启动该Activity。即使您在另一个并非要启动SecondActivity的适配器中重用此ViewHolder,此行为也不会改变。
您创建一个在ViewHolder中使用的回调接口。单击视图后,将改为运行回调接口,因此,现在,如果开发人员设置了自定义代码...,也将运行自定义代码。在这种情况下,您可以将ViewHolder设置为在一个实现中启动SecondActivity.class,而另一个实现可能使它启动ThirdActivity.class,而另一个实现可能仅启动Toast并说单击了视图。


注意第二种实现方式如何更加灵活,现在您更愿意在其他地方重用该组件了吗?

因此,是的,尽管使用回调接口并不是最佳方法(在编程中,从来没有最佳方法,而只是一种更有效的方法来完成所需的工作),但它仍然是使代码更灵活的一种很好的方法。

最后一件事...如果只是您自己的代码,不要认为没有必要使您的代码更灵活。


试想一下,如果只用一个灵活的组件就足够制作10个相同的组件,而这些组件之间会有细微的差别……
想象一下,如果您将来要更新应用程序,并且需要更改用户界面。组件过于受限,使其很难编辑。

关于java - 从 fragment 调用 Activity 使用接口(interface),但是为什么呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54274989/

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