如何在 Fragments 中处理 onClick

新手上路,请多包涵

这是我第一次尝试片段,我无法处理 android:onClick

我的片段 XML 中有一个这样的按钮

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/save_keywords_button"
        android:id="@+id/save_keywords"
        android:layout_marginTop="340dp"
        android:background="#FF2E7D32"
        android:textColor="#FFFFFF"
        android:typeface="normal"
        android:onClick="myLogic" />

我搜索了很多结果,但无法获得处理 onClick 事件的确切解决方案。

我的问题是,如何获取按钮的 ID 并编写 myLogic 方法。 FindViewById() 在片段中不起作用,我应该在哪里编写该方法?在片段中还是在我的活动中?

原文由 Uday 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 571
2 个回答

更好的方法是在您的片段类中实施 OnClickListener 并覆盖 onCreateView 在您将侦听器分配给按钮的片段中。

通过在您的 XML 布局中放置 onClick 属性,您的加载活动将查找活动中的元素,而不是片段中的元素。这将抛出异常。

我建议阅读一些片段活动层次结构以了解何时可以访问片段中的元素。

 public class StartFragment extends Fragment implements OnClickListener{

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View v = inflater.inflate(R.layout.fragment_start, container, false);

    Button b = (Button) v.findViewById(R.id.save_keywords);
    b.setOnClickListener(this);
    return v;
}

@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.save_keywords:

        ...

        break;
    }
}
}

参考资料: 这里

原文由 parohy 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题