我是Android开发的新手,我还在阅读文档。顺便说一下,当我点击一个按钮时,我正在尝试添加一个事件。这是代码:
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/editText1"
android:layout_below="@+id/editText1"
android:layout_marginTop="24dp"
android:text="Execute"
android:onClick="onClickRadGard" />
我以这种方式声明了onClickRadGrad:
public class MainActivity extends ActionBarActivity {
final Button buttonx = (Button) findViewById(R.id.button1);
buttonx.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// Perform action on clicks
}
});
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
我不知道问题出在哪里因为Eclipse告诉我这个:
你有什么建议吗?您可以在此处找到完整的代码:link。
答案 0 :(得分:5)
几点建议:
您在xml中声明了android:onClick="onClickRadGard"
。这意味着您的活动将期望找到具有以下签名的方法:
public void onClickRadGard(View view) {
}
如果未声明您的应用程序将崩溃。当您按下android:id="@+id/button1"
时,将调用此方法,因此您无需在其上调用setOnClickListener
。
关于您获得的编译时错误,我查看了您在链接中发布的代码。这两行必须在setContentView
onCreate
的正文中定义。final Button buttonx = (Button) findViewById(R.id.button1);
buttonx.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//other code
}
});
{{1}}
答案 1 :(得分:2)
buttonx.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// Perform action on clicks
}
});
将上述代码放在onCreate()
下面的setContentView(..)
内。
此外,由于您在活动中定义onClickListener
,因此可以从xml中删除android:onClick="onClickRadGard"
。
答案 2 :(得分:2)
您应该只指定android:onClick="onClickRadGard"
,然后执行
public class MyActivity extends Activity
{
...
public void onClickRadGard(View v)
{
///code here
}
}
或者,如果您不在XML中指定它,但只能在监听器中指定:
public class MyActivity extends Activity
{
....
Button button1;
@Override
public void onCreate(Bundle saveState)
{
super.onCreate(saveState);
setContentView(R.layout.activity_my);
button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View view)
{
//code here
}
});
}
...
}
或者这样:
public class MyActivity extends Activity implements View.OnClickListener
{
....
Button button1;
@Override
public void onCreate(Bundle saveState)
{
super.onCreate(saveState);
setContentView(R.layout.activity_my);
button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(this);
}
@Override
public void onClick(View view)
{
if(view == button1)
{
///code here
}
}
}