试图调用一个活动,但在onClick上遇到麻烦

时间:2011-10-31 21:42:58

标签: android eclipse onclick

我试图运行这个简单的代码(我是一个初学者:)。

尝试运行此功能。 //文本通常是我用于按钮的内容。但是,我看到了我想尝试的这种切换技术,它似乎更有效率。但是,我得到与onClick相关的错误(关于()和'void是无效类型')。我不知道是什么原因引起的。只是想访问按钮。任何人都可以告诉我为什么?

谢谢!

    package com.experiment.fewops;

    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;

    public class FewOptions extends Activity {
        /** Called when the activity is first created. */

        final Button sexy = (Button) findViewById(R.id.buttonSexy);
        final Button text = (Button) findViewById(R.id.buttonText);

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);

    //        sexy.setOnClickListener(new View.OnClickListener() {
    //          
    //          @Override
    //          public void onClick(View v) {
    //              Intent intent = new Intent(this, SexyPage.class);
    //              startActivity(intent);
    //          }
    //      });

    @Override
    public void onClick(View v) {


        switch(v.getId()){
        case R.id.buttonSexy:
            Intent intent = new Intent(this,SexyPage.class);
            startActivity(intent);
            break;
        }

    };


}

}

3 个答案:

答案 0 :(得分:1)

这里实际上有两个问题: 首先,正如@Saiesh所说,如果要在类级别实现click侦听器,则需要将类声明更改为implment OnClickListener。所以你的声明看起来像

public class FewOptions extends Activity implements OnClickListener{

第二个问题(以及你得到关于void的错误类型的错误的原因)是你在onCreate方法的主体中声明了onClick方法。将onClick方法的声明移到onCreate方法的右大括号(})之外,该错误应该消失。

还有一点需要注意:在完成上述2个修复后,请不要忘记将您的类添加为按钮的单击侦听器:

 sexy.setOnClickListener(this);

答案 1 :(得分:0)

您需要传递正确的上下文

Intent intent = new Intent(FewOptions.this,SexyPage.class);
FewOptions.this.startActivity(intent);

答案 2 :(得分:0)

解决方案是使用这个onClick()方法,您的类需要实现onClickListener接口。因此,你的班级标题应该是这样的

public class FewOptions extends Activity implements onClickListener
{
       //Eclipse will automatically ask you to override the onClick() method
}

这就是解决方案:)