Android: возвращение к основным проблемам активности - PullRequest
1 голос
/ 29 августа 2011

В моей основной деятельности у меня есть меню, и при выборе опции меню создается намерение и запускается новое действие. Когда это действие завершается, процесс должен вернуться к основному действию и всем его предыдущим состояниям согласно ActivityLifeCycle.

Я заметил, что когда он возвращается к основному виду деятельности, ничего не доступно, и экран тускнеет. Я могу вернуться к тому, что ожидаю, только когда нажму программную клавишу меню.

Кто-нибудь сталкивался с этой проблемой раньше? Обратная связь будет оценена! Пример кода ниже:

@Override
protected void onResume(){          
    super.onResume();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main_menu, menu);
    return true;
}    

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle item selection
    switch (item.getItemId()) {
    case R.id.menu_settings: 
        return true;            
    case R.id.menu_decks:
        Intent launchDecks = new Intent(this, stackDecks.class);
        startActivity(launchDecks);             
        return true;        
    case R.id.menu_exit:  
        this.onDestroy();
        this.finish();
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}   

Ответы [ 2 ]

2 голосов
/ 10 декабря 2011

Код в первом посте на самом деле правильный (у меня что-то очень похожее). Существует большая вероятность, что ошибка находится в файле menu.xml res, даже если она надувается без проблем. Убедитесь, что он полностью согласован в обоих местах и ​​содержит одинаковые элементы. Я наконец решил это после нескольких часов экспериментов.

0 голосов
/ 29 августа 2011

Вы, похоже, путали с использованием супер.

super.m () используется для вызова метода суперкласса.

Если вы наследуете метод без переопределения, тогда super.m () = this.m () Смотри свой супер.onDestroy

Абсолютно бесполезно переопределять метод m (), просто вызывая super.m () Смотрите свой на резюме

Иногда полезно вызывать метод суперкласса, он позволяет использовать этот код в подклассе. Например, здесь onCreateMenuOptions переопределяется, и ваш подкласс может извлечь выгоду из некоторого кода имитации для меню.

С уважением, Stéphane

...