Нужно ли раздувать представление, чтобы получить его идентификатор для метода onClick? - PullRequest
0 голосов
/ 20 марта 2011

Нужно ли раздувать представление, чтобы получить его идентификатор для метода onClick?Потому что когда я запускаю свою программу в эмуляторе и нажимаю на конкретную кнопку, она ничего не делает!Я хочу вернуться к макету 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

1 Ответ

3 голосов
/ 21 марта 2011

Андрей,

Возможно, вы захотите сделать индивидуальные onClick() методы для каждого предмета.Вот как я обрабатываю свои объекты, способные щелкать мышью.

Пример:

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

Таким образом, у вас уже есть объект кнопки, созданный на основе значения его идентификатора, и onClickListener специально приспособлен для этого.item.

удачи!

...