首页 文章

片段元素中的片段onClick方法

提问于
浏览
8

我读了很多关于片段的文章,但我仍然对如何做什么感到困惑 .

我有一个MainActivity,它并排显示两个片段 . 在其中一个片段中,我有一个按钮,并在按钮的片段布局XML中定义

android:onClick="buttonClicked"

现在我想实现该方法

public void buttonClicked(View view)

我原以为这必须在FragmentA.java中实现,而不是在MainActivity.java中实现 . 但它只有在MainActivity.java中实现该方法时才有效 . 这是为什么?对我来说没有意义 . Pre Honeycomb属于一项活动的方法保留在该活动中,现在在平板电脑上我将许多活动合并到一个MainActivity并且所有不同的方法合并在一起?那么你在FragmentA.java中提出了什么呢?如果你必须开始自己的活动,因为这个应用程序在掌上电脑上运行,那么onClick方法不应该在MainActivity中,而是在需要调用的Activity中 . 我此刻很困惑......

2 回答

  • 0

    我不确定具体问题是什么,但也许这会有所帮助 .

    来自 Fragment 的Android文档:

    您应该将每个片段设计为模块化和可重用的活动组件 . 也就是说,因为每个片段使用自己的生命周期回调定义自己的布局和自己的行为,所以可以在多个活动中包含一个片段,因此您应该设计为重用并避免直接操作另一个片段中的一个片段 .

    也就是说,你永远不应该操纵另一个片段中的片段;相反,这应该通过基础活动来完成 . 阅读article中的"Creating event callbacks to the activity"部分了解更多信息(这是重要的事情!!) .

    另一方面,如果您希望按钮在 Fragment 内执行操作(即如果您希望 Button 单击以更改片段中 TextView 的文本),则应在 Fragment 中实现此操作,而不是 Activity (这是因为结果行为包含在 Fragment 中,与父 Activity 无关 .

    发表评论我可以澄清我的帖子是否令人困惑......我最近才开始理解 Fragment 自己:) .

  • 4

    好,

    我猜这与android上下文结构的层次结构有关 . Activity是所有子视图的主机,因此您可以说片段实际上正在使用其主机的上下文 . 这就是为什么当您使用onClick with fragment system时总是在片段的Host活动中搜索它 .

    检查一下 . Android developer onClick attribute description

    我没有检查过一件事,但你可以进行测试 . 通过在主机活动而不是片段中提供实现,但是使用片段的onClick on布局文件 . 它应该调用parent的方法 .

相关问题