Кнопка «Назад» и определение идентификатора макета - PullRequest
0 голосов
/ 21 мая 2011

Я пытаюсь, чтобы мое приложение отображало всплывающее сообщение при нажатии кнопки «Назад» при отображении R.layout.main.xml, но не отображает сообщение из любого другого layout.xml. Кроме того, когда отображается любой другой макет, я хочу, чтобы он вернулся к предыдущему экрану (как должна делать кнопка «Назад»). Если бы я оставил кнопку «Назад» по умолчанию, всякий раз, когда вы ее нажимали, она выходила из приложения с любого экрана макета. Вот мой текущий код ..... он продолжает закрываться, и я не могу понять, почему:

private Toast toast;
private long lastBackPressTime = 0;


@Override
public void onBackPressed() 
{
    View thisView = getCurrentFocus();
    int screen = thisView.getId();
    if (screen == R.layout.main)
    {
        if (this.lastBackPressTime < System.currentTimeMillis() - 4000) 
        {
            toast = Toast.makeText(this, "Press BACK once more to close this application", 4000);
            toast.show();
            this.lastBackPressTime = System.currentTimeMillis();
        } 
        else 
        {
            if (toast != null) 
            {
                toast.cancel();
            }
             super.onBackPressed();
        }
    }
    if (screen != R.layout.main)
        super.onBackPressed();
}

1 Ответ

0 голосов
/ 22 мая 2011

В своих приложениях я использую константы для каждого макета и переменную currentView. Каждый раз, когда я меняю представление содержимого, я переназначаю эту переменную, поэтому я всегда знаю, где я сейчас нахожусь. Надеюсь, это поможет вам.

...