Android 片段上的OnClick侦听器问题

Android 片段上的OnClick侦听器问题,android,android-studio,android-fragments,onclick,onclicklistener,Android,Android Studio,Android Fragments,Onclick,Onclicklistener,我对片段上的事件OnClickListener有一个问题 我正在使用Android Studio 3.1 这是我的源代码的捕获: 焦点以黄色突出显示,如果源代码我在 运行它已经可以了。但当我取消注释时,它会使我的应用程序生效 接近 然后,我尝试通过在XML上提供eventonClick来改变方法,但没有成功 在课堂上使用方法 如果在XML中声明android:onclick=“method”,则需要传递视图参数 您还需要在活动中声明此方法(而不是在片段中) 在Java代码中 button

我对片段上的事件OnClickListener有一个问题

  • 我正在使用Android Studio 3.1

  • 这是我的源代码的捕获:


    焦点以黄色突出显示,如果源代码我在 运行它已经可以了。但当我取消注释时,它会使我的应用程序生效 接近

    然后,我尝试通过在XML上提供event
    onClick
    来改变方法,但没有成功 在课堂上使用
    方法
    


如果在XML中声明
android:onclick=“method”
,则需要传递
视图
参数

您还需要在活动中声明此方法(而不是在片段中)

在Java代码中

button.setOnClickListener(new OnClickListener() {
    public void onClick(View v)
    {
        Toast.makeText(getActivity(),"Button is clicked",Toast.LENGTH_SHORT).show();
    }     
});
导入android.os.Bundle;
导入android.support.v4.app.Fragment;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.Button;
导入android.widget.ListView;
导入android.widget.simpledapter;
导入android.widget.Toast;
导入java.util.ArrayList;
导入java.util.HashMap;
公共类UncompleteFragment扩展片段实现View.OnClickListener{
私有数组列表;
私人SimpleAdapter sa;
私有HashMap项;
私有列表视图列表视图;
私人按钮btnEdit;
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
最终视图根视图=充气机。充气(R.layout.uncomplete,container,false);
listView=rootView.findviewbyd(R.id.list);
btnEdit=rootView.findviewbyd(R.id.btn\u edit\u uncomplete);
setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v)
{
Toast.makeText(getActivity(),“单击按钮编辑!”,Toast.LENGTH_SHORT.show();
}
});
返回rootView;
}
@凌驾
已创建视图上的公共void(视图,捆绑保存状态){
super.onViewCreated(视图,savedInstanceState);
列表=新的ArrayList();

对于(int i=0;i)这是对我的源代码的捕获:“-因为代码的复制粘贴要困难得多?您已经实现了View.OnClickListener.So您必须实现OnClick(View v)方法。在该OnClick()中编写代码。OnClick(View v)已经存在,因为我实现View.OnClickListener时必须存在。但该方法仍然为空将导致堆栈溢出!图像和屏幕截图可以很好地添加到帖子中,但请确保没有它们的帖子仍然清晰有用。不要发布代码图像或错误消息。阅读。而是复制、粘贴或键入act如果在调试模块上运行,调试结果为:java.lang.reflect.InvocationTargetException java.lang.NullPointerException:尝试调用虚拟方法'void android.view.view.setOnClickListener(android.view.view$OnClickListener)“在空对象引用上,它清楚地表明,您的按钮是空的。您可以在问题中添加更改的代码吗?您可以像我的答案一样在java代码中设置onclicklistener。@Jyoti JK,我使用了您的推荐源代码,但结果按钮仍然为空
button.setOnClickListener(new OnClickListener() {
    public void onClick(View v)
    {
        Toast.makeText(getActivity(),"Button is clicked",Toast.LENGTH_SHORT).show();
    }     
});
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.HashMap;

public class UncompleteFragment extends Fragment implements View.OnClickListener {

    private ArrayList<HashMap<String,String>> list;
    private SimpleAdapter sa;
    private HashMap<String,String> item;
    private ListView listView;
    private Button btnEdit;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        final View rootView = inflater.inflate(R.layout.uncomplete, container, false);
        listView = rootView.findViewById(R.id.list);
        btnEdit = rootView.findViewById(R.id.btn_edit_uncomplete);
        btnEdit.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v)
            {
                Toast.makeText(getActivity(), "Button Edit Clicked!", Toast.LENGTH_SHORT).show();
            }
        });
        return rootView;
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        list = new ArrayList<HashMap<String,String>>();
        for(int i=0;i<uncomplete.length;i++){
            item = new HashMap<String,String>();
            item.put( "line1", uncomplete[i][0]);
            item.put( "line2", uncomplete[i][1]);
            item.put( "line3", uncomplete[i][2]);
            item.put( "line4", uncomplete[i][3]);
            list.add( item );
        }

        sa = new SimpleAdapter(getActivity(), list,
                R.layout.uncomplete_list,
                new String[] { "line1","line2","line3","line4"},
                new int[] {R.id.date,R.id.check_in,R.id.check_out,R.id.work_hour});

        listView.setAdapter(sa);
    }

    private String[][] uncomplete =
            {{"12 Apr 2018","08:00","14:00","05:00"},
             {"27 Mar 2018","00:00","00:00","00:00"},
             {"06 Feb 2018","08:00","00:00","00:00"}};

    public void doEdit() {
        Toast.makeText(getActivity(), "Button Edit Clicked!", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onClick(View view) {

    }
}