2013-07-05 3 views
8

я реализовал кнопки в моем приложении, который очищает все sharedpreferences, используя этот код:Обновить активность без повторного открытия?

context.getSharedPreferences("bifrostPrefs", 0).edit().clear().commit(); 

Теперь проблема заключается в том, что всякий раз, когда я использую кнопку, я после этого нужно выйти из активности и вновь открыть его, чтобы увидеть результаты , Я попытался решить это, просто сделать кнопку повторно открыть действие с этим кодом:

Intent reOpen = new Intent (Bifrost.this, Bifrost.class); 
startActivity(reOpen); 

Моя идея казалась умный, пока я не заметил, что, если я вновь открыть свою деятельность, я после этого нужно нажать кнопку назад в два раза чтобы вернуться к основной деятельности. Так что я сделал некоторые ИЯЯ и нашел этот код:

finish(); 
startActivity(getIntent()); 

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

+0

передать намерение без анимации – QuokMoon

ответ

15

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

finish(); 
overridePendingTransition(0, 0); 
startActivity(getIntent()); 
overridePendingTransition(0, 0); 
+0

Да! Это именно то, что я искал, приложение работает так, как я намеревался сейчас, нет необходимости в дополнительных осложнениях. Спасибо! – Guy

+0

работает для меня тоже! – publicknowledge

+0

Это также сработало для меня. Простое решение. –

0

Есть ли у вас некоторые виды, которые могут изменять их значение/размер на основе значений из ваших общих настроек? если да, создайте метод, который инициирует представления и вызывает этот метод для метода onCreate() и метода onClick().

1

Вы можете добавить флаг Intent.FLAG_ACTIVITY_NO_ANIMATION (link) в ваш reOpen намерен уничтожить все анимации. Но, как указано из другого ответа, лучше обновите данные внутри вас. Activity.

+0

Это умно! –

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