Используйте кнопку назад, чтобы перейти к главному виду - PullRequest
0 голосов
/ 21 октября 2011

У меня есть приложение с основным представлением и набором вложенных представлений, определенных как XML.Я загружаю основной вид с помощью:

@Override

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

Когда я переключаюсь на другой вид, я делаю:

holaPlayerBtn.setOnClickListener(new OnClickListener(){
@Override

public void onClick(View view)
{   
    setContentView(R.layout.primerareceta);
    };

Чтобы вернуться к основному виду, я пытаюсь:

@Override

public boolean onKeyDown(int keyCode, KeyEvent event){
    if (keyCode == KeyEvent.KEYCODE_BACK){
        setContentView(R.layout.main);
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

Но при этом я получаю перекрашенный основной вид, но содержащиеся в нем кнопки больше не работают.

Знаете ли вы, почему это происходит?Как я могу вернуться к главному виду со всеми его кнопками, работающими как в предыдущий раз?

Спасибо за вашу помощь, Педро

Ответы [ 3 ]

1 голос
/ 21 октября 2011

Когда вы вызываете setContentView, вы заменяете то, что на экране.Это эффективно удаляет всех слушателей и просмотров, которые у вас были до этого.Чтобы сделать это, вы можете захотеть, но ваш исходный код инициализации внутри функции, которую вы можете вызвать внутри onCreate, а также когда нажата кнопка «Назад».

Это похоже на большую работу, когда выпросят звуки, как стандартный поток приложения.Было бы проще иметь основное действие, и вместо смены представлений вы должны переключаться между действиями, используя startActivity.Это также даст вам желаемое поведение с помощью кнопки «назад» без необходимости писать какой-либо код для его обработки.

1 голос
/ 21 октября 2011

Я не думаю, что вам разрешено вызывать setContentView более одного раза. И в любом случае вам определенно не следует.

ViewSwitcher javadoc

первый пример

второй пример

1 голос
/ 21 октября 2011

Не переключайте раскладки таким образом.Я бы порекомендовал использовать отдельные действия, или вы можете использовать ViewSwitcher.

...