Android 片段上的OnClick侦听器问题
我对片段上的事件OnClickListener有一个问题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
- 我正在使用Android Studio 3.1
- 这是我的源代码的捕获:
焦点以黄色突出显示,如果源代码我在 运行它已经可以了。但当我取消注释时,它会使我的应用程序生效 接近 然后,我尝试通过在XML上提供event
来改变方法,但没有成功 在课堂上使用onClick
方法
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) {
}
}