如何处理片段中的点击

2022-09-03 04:43:00

这是我第一次尝试 Fragments,我无法处理 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() 在片段中不起作用,我应该在哪里编写该方法?在片段中还是在我的活动中?


答案 1

更好的方法是实现片段类,并在片段中重写,将侦听器分配给按钮。OnClickListeneronCreateView

通过将属性放在 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;
    }
}
}

参考来自: 这里


答案 2

android:onClick="myLogic"不会调用片段内的方法。请改用来处理此类事件。myLogicOnClickListener

请参阅以下参考资料

在 android 中实现 View.OnClickListener 的最佳方式

http://developer.android.com/reference/android/view/View.OnClickListener.html


推荐