0

您是否需要对视图进行膨胀以获取 onClick 方法的 id?因为当我在模拟器中运行我的程序并单击特定按钮时,它什么也不做!我希望它回到 main.xml 布局!我需要以其他方式处理 onClick 吗?

public void onClick(View v) {
        switch( v.getId()){
            case R.id.play:
                setContentView(R.layout.play);
                setQuestion();
                break;
            case R.id.level:
                setContentView(R.layout.level);
                if(lvl.equals("1")) {
                    lvl1.setChecked(true);
                }
                if(lvl.equals("2")) {
                    lvl2.setChecked(true);
                }
                if(lvl.equals("3")) {
                    lvl3.setChecked(true);
                }
                if(lvl.equals("4")) {
                    lvl4.setChecked(true);
                }
                if(lvl.equals("5")) {
                    lvl5.setChecked(true);
                }
                 break;
            case R.id.setLevel:
                if(lvl1.isChecked()) {
                    setLevel("1");
                }
                if(lvl2.isChecked()) {
                    setLevel("2");

                }
                if(lvl3.isChecked()) {
                    setLevel("3");
                }
                if(lvl4.isChecked()) {
                    setLevel("4");
                }
                if(lvl5.isChecked()) {
                    setLevel("5");
                }
                setContentView(R.layout.main);
                break;
        }
    }

以下是我获得观点的方式:

setContentView(R.layout.main);

        Button play = (Button)findViewById(R.id.play);
        play.setOnClickListener(this);
        Button level = (Button)findViewById(R.id.level);
        level.setOnClickListener(this);
        Button setLevel = (Button)getLayoutInflater().inflate(R.layout.level, null).findViewById(R.id.setLevel);

        setLevel.setOnClickListener(this);


        lvl1 = (RadioButton)getLayoutInflater().inflate(R.layout.level, null).findViewById(R.id.lvl1);

        lvl2 = (RadioButton)getLayoutInflater().inflate(R.layout.level, null).findViewById(R.id.lvl2);

        lvl3 = (RadioButton)getLayoutInflater().inflate(R.layout.level, null).findViewById(R.id.lvl3);

        lvl4 = (RadioButton)getLayoutInflater().inflate(R.layout.level, null).findViewById(R.id.lvl4);

        lvl5 = (RadioButton)getLayoutInflater().inflate(R.layout.level, null).findViewById(R.id.lvl5);

我应该怎么做,当我单击 setLevel 按钮时,它会将视图更改回 main.xml 视图

4

1 回答 1

3

安德鲁,

您可能希望onClick()为每个项目创建单独的方法。这就是我处理可点击对象的方式。

例子:

Button play = (Button)findViewById(R.id.play);
play.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                //perform play button actions here
            }
        });

这样,您已经根据其 ID 值创建了按钮对象,并且 onClickListener 专门针对该项目量身定制。

祝你好运!

于 2011-03-20T21:31:04.207 回答