有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将onclick侦听器添加到片段xml中的按钮

我正在使用安卓 studio编写安卓 4.4项目

我对片段的想法还不熟悉,我试图创建一个简单的应用程序,其中有一个按钮,点击处理程序会向日志发送消息

这是片段类

public static class PlaceholderFragment extends Fragment {

    public PlaceholderFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_main_menu, container, false);
        return rootView;
    }

    public void addStringClickHandler(View v) {
        Log.d("tag","hello");
    }
}

这是XML的片段布局

<RelativeLayout xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
xmlns:tools="http://schemas.安卓.com/tools"
安卓:layout_width="match_parent"
安卓:layout_height="match_parent"
安卓:paddingLeft="@dimen/activity_horizontal_margin"
安卓:paddingRight="@dimen/activity_horizontal_margin"
安卓:paddingTop="@dimen/activity_vertical_margin"
安卓:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.tuxin.myalcoholist.myalcoholist.myalcoholist.MainMenuActivity$PlaceholderFragment">

<Button
    安卓:layout_width="wrap_content"
    安卓:layout_height="wrap_content"
    安卓:text="@string/add_drink"
    安卓:id="@+id/add_drink"
    安卓:layout_alignParentTop="true"
    安卓:layout_centerHorizontal="true"
    安卓:layout_marginTop="36dp"
    安卓:onClick="addStringClickHandler" />
</RelativeLayout>

如您所见,我在XML 安卓:onclick中设置了addStringClickHandler 在fragment类中,我创建了这个函数,但当我执行应用程序时 我收到一个错误,运行时无法找到addStringClickHandler(视图)方法

我错过了什么


共 (1) 个答案

  1. # 1 楼答案

    膨胀视图时,尝试注册onClick方法

    View rootView = inflater.inflate(R.layout.fragment_main_menu, container, false);
    rootView.findViewById(R.id.add_drink).setOnClickListener(new OnClickListener() {
        public void onClick(View view) {
            // do what you need               
        }
    });
    return rootView;
    

    或者可以将片段设置为点击侦听器

    View rootView = inflater.inflate(R.layout.fragment_main_menu, container, false);
    rootView.findViewById(R.id.add_drink).setOnClickListener(this);
    return rootView;
    

    然后让片段实现OnClickListener