2015-07-06 4 views
0

У меня есть активность, которая имеет несколько частей панели пользовательского интерфейса (вы можете считать их в виде андроида), эти панели по умолчанию будут невидимыми.Управление обратным действием для множественного просмотра

Теперь, когда пользователь триггера action1, PanelA будет отображаться, когда триггер action2, PanelB будет отображаться (в другом месте экрана).

Оба PanelA и PanelB видны на данный момент, сейчас, когда пользователь попал в меню назад, PanelB должны исчезнуть, и PanelA должны исчезнуть, когда снова попали в меню назад.

Сначала я использую View для проведения различных панелей, однако я обнаружил, что трудно сохранить состояние состоит, например, активность будет немного отличаться от PanelA и PanelB.

Тогда я нашел фрагмент, однако после того, как я испытанный, я обнаружил, что addTobackStack() не может обратиться к моим мы-случае, так как PanelA и PanelB находятся в другом месте, андроид не может сохранить свое состояние по умолчанию.

Так что я задаюсь вопросом, есть ли какое-либо другое решение для моего требования?

ответ

0

Вам необходимо вручную обработать этот сценарий внутри onBackPressed() метод Activity.

Например -

@Override 
public void onBackPressed() { 
    if (panelB.isOpened()) { 
     panelB.close() 
    } else if (panelA.isOpened()) { 
     panelA.close()   
    } else { 
     super.onBackPressed(); 
    } 
} 

При открытии panelB, он будет закрывать только panelB и не будут делать что-нибудь еще. То же самое касается panelA, если он открыт и когда обе панели закрыты, то он выйдет из приложения, как обычно.

Я настоятельно рекомендую использовать здесь DialogFragments, так как вы можете позвонить show() и dismiss() в любой момент времени, и они могут отлично справиться с пользовательскими видами.

Надеюсь, это поможет.

Смежные вопросы