Android: возвращение к основным проблемам активности

1

В моей основной деятельности у меня есть меню, и когда выбран пункт меню, создается Intent и начинается новое действие. Когда эта деятельность завершается, процесс должен вернуться к основному действию и всем его предыдущим состояниям в соответствии с 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);
    }
}   
  • 0
    Правильно ли вы реализуете onStart, onRestart и Resume?
  • 1
    Как вы заканчиваете второе занятие? Вы можете показать код?
Показать ещё 5 комментариев
Теги:
android-activity
android-intent
activity-lifecycle
onresume

2 ответа

2

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

0

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

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

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

Абсолютно бесполезно переопределять метод m() только для вызова super.m() См. Ваш onResume

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

С уважением, Стефан

  • 0
    -изменил код ранее super.onDestroy () .. -Я согласен с комментарием относительно onResume () Я удалил одну строку кода внутри него, которая отображала некоторый текст для виджета Toast ..

Ещё вопросы

Сообщество Overcoder
Наверх
Меню