Java 按钮setOnClickListener导致应用程序崩溃
所以我有两个XML布局文件。Java 按钮setOnClickListener导致应用程序崩溃,java,android,xml,button,Java,Android,Xml,Button,所以我有两个XML布局文件。 一个是菜单,另一个是应用程序。 现在,我在一个XML文件上有一些按钮,在另一个文件上有一些其他按钮 因此,该代码起作用: setContentView(R.layout.main); start = (Button) findViewById(R.id.button1); start.setOnClickListener(this); 但如果我改变观点并写下以下内容: setContentView(R.layout.random)
一个是菜单,另一个是应用程序。
现在,我在一个XML文件上有一些按钮,在另一个文件上有一些其他按钮 因此,该代码起作用:
setContentView(R.layout.main);
start = (Button) findViewById(R.id.button1);
start.setOnClickListener(this);
但如果我改变观点并写下以下内容:
setContentView(R.layout.random);
add_person = (Button) findViewById(R.id.add);
add_person.setOnClickListener(this); //crash here
应用程序崩溃了
add\u person
为空,因此获取Nullpointer异常,并且您在random.xml中有一个按钮,该按钮具有add as id
如果没有,则添加
<Button android:id="@+id/add" ... />
add\u person
为空,因此获取空指针异常,并且您在random.xml中有一个按钮,该按钮具有add as id
如果没有,则添加
<Button android:id="@+id/add" ... />
从project->Clean中清除当前项目后重试 或者你可以使用
(Button)random.findViewById(R.id.add);
而不是
(Button) findViewById(R.id.add);
从project->Clean清除当前项目后重试 或者你可以使用
(Button)random.findViewById(R.id.add);
而不是
(Button) findViewById(R.id.add);
您应该将该类实现为
onClickListner
,如下所示:
public class <ClassName> extends Activity implements OnClickListener{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
start = (Button) findViewById(R.id.button1);
start.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button1:
//Hear Yor Logic on Click Event.
break;
}
}
}
public类扩展活动实现OnClickListener{
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
开始=(按钮)findViewById(R.id.button1);
start.setOnClickListener(this);
}
@凌驾
公共void onClick(视图v){
开关(v.getId()){
案例R.id.button1:
//听到你的逻辑点击事件。
打破
}
}
}
您应该将该类实现为onClickListner
,如下所示:
public class <ClassName> extends Activity implements OnClickListener{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
start = (Button) findViewById(R.id.button1);
start.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button1:
//Hear Yor Logic on Click Event.
break;
}
}
}
public类扩展活动实现OnClickListener{
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
开始=(按钮)findViewById(R.id.button1);
start.setOnClickListener(this);
}
@凌驾
公共void onClick(视图v){
开关(v.getId()){
案例R.id.button1:
//听到你的逻辑点击事件。
打破
}
}
}
当然可以。xml是由eclipse使用gui生成器创建的。将按钮的id更改为addinXML,然后单击methodsry…xml中的id为add。你是说这行吗?tart=(按钮)findViewById(R.id.button1);这行代码行。@Dennisnote实际上,dennis id为add的按钮必须在xml文件中。这是崩溃日志:当然。xml是由eclipse使用gui生成器创建的。将按钮的id更改为addinXML,然后单击methodsry…xml中的id为add。你是说这行吗?tart=(按钮)findViewById(R.id.button1);这行代码行。@Dennisnote实际上dennis带有id add的按钮必须在xml文件中。这是崩溃日志:是的,我在注释中上传了xml。所以另一个按钮也不起作用。它在xml和java类中也有正确的id是的,我在评论中上传了xml。所以另一个按钮也不起作用。它在xml和java类中也有正确的id