2016-05-15 8 views
0

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

Когда нажата кнопка Up button, меня берут на родительскую активность, и она перезагружает тему, чтобы использовать новую тему. Однако, если я все еще в SettingsActivity и нажмите кнопку Back, я возвращаюсь к MainActivity, но новая тема не применяется. Я полагаю, MainActivity не перезагружает onCreate() в этом случае.

Я хотел поведение override the Back баттона только в том SettingsActivity и я знаю, как, но я не знаю, какой метод выполнить для того, чтобы имитировать кнопку Up нажимается поведения.

Любые идеи?

+0

Что вы подразумеваете под кнопкой «вверх»? Это пользовательская кнопка, которую вы добавили? – AkashBhave

+0

Это стрелка «Вверх», которая находится вместо кнопки «Домой», и когда нажатие приводит к родительской активности. – iBobb

ответ

1

Если родительская активность - это то, что вы контролируете, просто переопределите кнопку «Назад». Вы можете сделать это так:

@Override 
public void onBackPressed() { 
    // Replace "ParentActivity.class" with the name of your parent activity 
    Intent parentIntent = new Intent(getApplicationContext(), ParentActivity.class); 
    startActivity(parentIntent); 
} 

Приведенный выше код должен отменить кнопку «Назад» и дать вам нужный результат.

+0

haha ​​wow thanks, я не понимал, что это может быть так просто ... просто немного оффтопное разъяснение, когда мы используем finish(); вместе с startActivity? или мы используем только финиш(), если у нас есть текущая активность за этим? – iBobb

+1

Рад, что это помогло! Чтобы ответить на ваш вопрос, он 'finish()' activity в основном вызывает метод 'onDestroy()' активности вашего намерения. Таким образом, вам действительно не нужно использовать финиш, потому что это просто остановит действие. – AkashBhave

+0

К сожалению, это привело к неприятным ошибкам. Если я перейду из MainActivity в «Настройки» и нажмите кнопку «Назад», MainActivity снова запустится. Если я нажму кнопку «Назад», я снова вернусь к настройкам. Кнопка «Назад»> «Главный экран». Кнопка «Назад»> «Экран настроек» ... и он застрял в этом цикле. – iBobb