Android 按钮的OnClick侦听器不工作
我只是想通过按钮和变量来初始化变量。 但是当我尝试初始化时,如果我为按钮设置OnClickListeners,应用程序会意外停止。 如果我对设置OnClickListener的行进行注释,则应用程序工作正常。因此,我确信问题肯定出在OnClickListener上 类名是Data.javaAndroid 按钮的OnClick侦听器不工作,android,button,Android,Button,我只是想通过按钮和变量来初始化变量。 但是当我尝试初始化时,如果我为按钮设置OnClickListeners,应用程序会意外停止。 如果我对设置OnClickListener的行进行注释,则应用程序工作正常。因此,我确信问题肯定出在OnClickListener上 类名是Data.java import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.Vie
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class Data extends Activity implements OnClickListener {
Button start, startFor;
EditText sendET;
TextView gotAnswer;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
initialise();
start.setOnClickListener(this);
**startFor.setOnClickListener(this);
setContentView(R.layout.get);**
}
private void initialise() {
// TODO Auto-generated method stub
start = (Button) findViewById(R.id.bSA);
startFor = (Button) findViewById(R.id.bSAFR);
sen
dET = (EditText) findViewById(R.id.etSend);
gotAnswer = (TextView) findViewById(R.id.tvGot);
}
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case (R.id.bSA):
break;
case (R.id.bSAFR):
break;
}
}
}
相应的清单添加活动为
<activity
android:name=".Data"
android:label="@string/app_name" >
</activity>
设置OnClickListener时有什么错误。。。我正在做的事情是否有问题?您尚未为活动指定视图。在调用
super.onCreate(..)
之后,调用setContentView(R.id.mylayoutid)
,其中mylayoutid是包含按钮的xml布局的名称。您尚未为活动指定视图。在调用super.onCreate(..)
之后,调用setContentView(R.id.mylayoutid)
,其中mylayoutid是包含按钮的xml布局的名称。在初始化方法之后设置内容视图。您需要在尝试访问UI组件之前执行此操作
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.get);
initialise();
start.setOnClickListener(this);
}
您正在初始化方法后设置内容视图。您需要在尝试访问UI组件之前执行此操作
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.get);
initialise();
start.setOnClickListener(this);
}
Espiandev是对的,
setContentView(R.id.mylayoutid)
必须在超级调用之后出现
此外,在布局xml中执行此操作可能更容易:
<Button android:id="@+id/bSA"
...
android:onClick="onClick"/>
<Button android:id="@+id/bSAFR"
...
android:onClick="onClick"/>
您甚至不必以这种方式实现View.OnClickListener,也不必调用setOnClickListener—当布局XML膨胀时,将自动分配单击侦听器。Espiandev是正确的,
setContentView(R.id.mylayoutid)
必须在超级调用之后
此外,在布局xml中执行此操作可能更容易:
<Button android:id="@+id/bSA"
...
android:onClick="onClick"/>
<Button android:id="@+id/bSAFR"
...
android:onClick="onClick"/>
您甚至不必以这种方式实现View.OnClickListener,也不必调用setOnClickListener—当布局XML膨胀时,将自动分配单击侦听器。case(R.id.bSA):这行吗?我将使用案例R.id.bSA:@Padma Kumar:这有什么区别吗。。是吗?凯斯(R.id.bSA):这样行吗?我将使用案例R.id.bSA:@Padma Kumar:这有什么区别吗。。是吗?是的我试过了。。但这仍然不起作用。。。问题再次出现在OnClickListener中,这是修改后的代码。。。初始化();setContentView(R.layout.get);start.setOnClickListener(this);启动.setOnClickListener(此)。。。。。。。。我只是想告诉大家,我正在使用ECLIPSE并为API级别7构建,交换
initialise()
和setContentView()
的顺序。您需要先设置内容视图,然后再尝试访问视图(您正在initialise()
中执行此操作),没有问题。别忘了把问题设为已回答(左边的勾号)是的,我试过了。。但这仍然不起作用。。。问题再次出现在OnClickListener中,这是修改后的代码。。。初始化();setContentView(R.layout.get);start.setOnClickListener(this);启动.setOnClickListener(此)。。。。。。。。我只是想告诉大家,我正在使用ECLIPSE并为API级别7构建,交换initialise()
和setContentView()
的顺序。您需要先设置内容视图,然后再尝试访问视图(您正在initialise()
中执行此操作),没有问题。别忘了将问题设置为已回答(左边的勾号)