Android обновляет текущую активность
Я хочу запрограммировать приложение для Android, чтобы оно обновляло текущую активность на ButtonClick. У меня есть одна кнопка в верхней части макета активности, которая будет выполнять эту работу. Когда я нажимаю на кнопку, текущая активность должна перезагрузиться снова - как перезагрузка устройства.
Спасибо
14 ответов
public void onClick (View v){
Intent intent = getIntent();
finish();
startActivity(intent);
}
Вы можете попробовать это
finish();
startActivity(getIntent());
Этот вопрос был задан ранее: Как перезапустить активность Android
В деятельности вы можете позвонить recreate()
"воссоздать" активность (API 11+)
Это метод обновления кнопки, но он хорошо работает в моем приложении. в finish() вы убиваете экземпляры
public void refresh(View view){ //refresh is onClick name given to the button
onRestart();
}
@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
Intent i = new Intent(lala.this, lala.class); //your class
startActivity(i);
finish();
}
Это то, что сработало для меня, как видно здесь.
Просто используйте его или добавьте в помощник статического класса и просто вызовите его из любого другого места в вашем проекте.
/**
Current Activity instance will go through its lifecycle to onDestroy() and a new instance then created after it.
*/
@SuppressLint("NewApi")
public static final void recreateActivityCompat(final Activity a) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
a.recreate();
} else {
final Intent intent = a.getIntent();
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
a.finish();
a.overridePendingTransition(0, 0);
a.startActivity(intent);
a.overridePendingTransition(0, 0);
}
}
Вы можете попробовать это:
CookieSyncManager.createInstance(this);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();
Intent intent= new Intent(YourCurrent.this, YourCurrent.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
Он должен начаться снова и удалить все экземпляры предыдущего текущего действия.
Нет, не должно.
Он должен обновить свои данные на месте (например, requery()
Cursor
). Тогда не будет "экземпляров предыдущей текущей активности", о которых нужно беспокоиться.
Ты можешь использовать:
startActivity(MyClass.this, MyClass.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Вы можете использовать это, чтобы обновить активность внутри себя.
finish();
startActivity(getIntent());
Самый простой способ - позвонить onCreate(null);
и ваша деятельность будет как новая.
Попробуй это
Simple way
Intent intent=new Intent(Current_Activity.this,Current_Activity.class);
startActivity(intent);
finish();
Я думаю, что лучшим выбором для вас является использование SwipeRefreshLayout View в вашем макете. Затем установите RefreshListener как.
mySwipeRefreshLayout.setOnRefreshListener(
new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
Log.i("Fav ", "onRefresh called from SwipeRefreshLayout");
// This method performs the actual data-refresh operation.
// The method calls setRefreshing(false) when it's finished.
request(); // call what you want to update in this method
mySwipeRefreshLayout.setRefreshing(false);
}
}
);
Для более подробной информации нажмите на эту ссылку
От диалога к деятельности, которую вы хотите обновить. Если это не первое занятие!
Вот так: mainActivity >> objectActivity >> диалог
В вашем диалоговом классе:
@Override
public void dismiss() {
super.dismiss();
getActivity().finish();
Intent i = new Intent(getActivity(), objectActivity.class); //your class
startActivity(i);
}