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 に答える