Android - загрузка другого макета в зависимости от значения, выбранного в Spinner - PullRequest
0 голосов
/ 13 января 2012

У меня есть счетчик на моей домашней странице, и когда я выбираю значение из счетчика и нажимаю кнопку "Отправить", моя следующая страница загружается несколькими текстовыми полями.

Однако, как я могу получить его, чтобы разные макетыотображаются в соответствии со значением, выбранным из счетчика.В настоящее время я пытаюсь использовать операторы if, однако это работает только для первого выбора, любые другие вызывают ошибку приложения приложения (приложение неожиданно остановилось ... Принудительное закрытие:

    String RefType = getIntent().getStringExtra("REFTYPE");
    if (RefType.equals("spinner_value_1"))
    {
       setContentView(R.layout.layoutvalue1);  
    }
    else if (RefType.equals("spinner_value_2"))
    {
       setContentView(R.layout.layoutvalue2); 
    }

Любая помощь будетбыть очень близким.

Спасибо

1 Ответ

0 голосов
/ 14 января 2012

Я полагаю, что ошибка будет в том, что вы пытаетесь установить contentView дважды, поэтому вы можете попробовать это:
Добавьте int layoutToLoad = 0;* (изменить здесь) в начало вашего класса, это поможет намопределить, что загрузить.Затем в вашем onCreate:

if (layoutToLoad == 0)
{
    setContentView(R.layout.choiceLayout); //whatever the layout with the spinner is
    //alternatively you can make the spinner via code  
}
else if (layoutToLoad == 1))
{
    setContentView(R.layout.layout1);
}
else if (layoutToLoad == 2))
{
    setContentView(R.layout.layout2);
}
//etc

, где вы обрабатываете свой onOptionSelected:

String RefType = getIntent().getStringExtra("REFTYPE");
if (RefType.equals("spinner_value_1"))
{
    layoutToLoad = 1;
    onCreate(null);  
}
else if (RefType.equals("spinner_value_2"))
{
    layoutToLoad = 2;
    onCreate(null);  
}
//etc
...