8

我创建了这个活动,一旦按下按钮,我就可以打开一个新活动。

但是 OnClickListener 似乎没有工作。

我是否声明按钮错误?

有人可以出去吗?

public class Menu extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.menu);

    View loginbutton = findViewById(R.id.butlogin);
    loginbutton.setOnClickListener(this);

    View recordbutton = findViewById(R.id.butrecordts);
    recordbutton.setOnClickListener(this);

    View viewbutton = findViewById(R.id.butviewts);
    viewbutton.setOnClickListener(this);

    View projectsbutton = findViewById(R.id.butprojects);
    projectsbutton.setOnClickListener(this);

}

public void onClick(View v){

    switch(v.getId())
    {
    case R.id.butlogin:
    {
        //open login screen
        Intent i = new Intent(this, login.class);
        startActivity(i);
        break;
    }
    case R.id.butrecordts:
    {
        break;
    }
    case R.id.butviewts:
    {
        break;
    }
    case R.id.butprojects:
    {
        break;
    }

    }
}
4

6 回答 6

12

是的,问题出在按钮的声明中,写下面的代码而不是你的代码,它会解决你的问题。

public class Menu extends Activity implements OnClickListener{

    Button loginbutton, recordbutton, viewbutton, projectsbutton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.menu);

        loginbutton = (Button) findViewById(R.id.butlogin);
        loginbutton.setOnClickListener(this);

        recordbutton = (Button) findViewById(R.id.butrecordts);
        recordbutton.setOnClickListener(this);

        viewbutton = (Button) findViewById(R.id.butviewts);
        viewbutton.setOnClickListener(this);

        projectsbutton = (Button) findViewById(R.id.butprojects);
        projectsbutton.setOnClickListener(this);

    }

    public void onClick(View v){

        switch(v.getId())
        {
            case R.id.butlogin:
            {
                //open login screen
                Intent i = new Intent(this, login.class);
                startActivity(i);
                break;
            }
            case R.id.butrecordts:
            {
                break;
            }
            case R.id.butviewts:
            {
                break;
            }
            case R.id.butprojects:
            {
                break;
            }

        }
    }
}
于 2013-01-09T10:22:16.060 回答
4

您忘记onClickListener在您的活动中实施。

实施它然后尝试:)

public class Menu extends Activity implements onClickListener
于 2013-01-09T10:21:42.920 回答
0

您刚刚忘记onClickListener在您的活动中实施:

public class Menu extends Activity implements OnClickListener { <----查看这一行 .................... }

于 2013-01-09T10:24:15.953 回答
0

尝试更改此行

 View loginbutton = findViewById(R.id.butlogin);

 Button  loginbutton = (Button)findViewById(R.id.butlogin);
于 2013-01-09T10:24:31.603 回答
0
    View.OnClickListener myhandler1 = new View.OnClickListener() {
    public void onClick(View v) {
     // the 1st button
     }
    }
    View.OnClickListener myhandler2 = new View.OnClickListener() {
    public void onClick(View v) {
     //the 2nd button
     }
于 2013-01-09T10:26:06.130 回答
0

你必须像这样声明你的按钮:

Button loginbutton = (Button)findViewById(R.id.butlogin);
    loginbutton.setOnClickListener(this);

    Button recordbutton = (Button)findViewById(R.id.butrecordts);
    recordbutton.setOnClickListener(this);

    Button viewbutton = (Button)findViewById(R.id.butviewts);
    viewbutton.setOnClickListener(this);

    Button projectsbutton = (Button)findViewById(R.id.butprojects);
    projectsbutton.setOnClickListener(this);
于 2013-01-09T10:27:45.677 回答