我想编写我的Android应用程序以刷新其在ButtonClick上的当前活动。我在活动布局的顶部有一个按钮可以完成这项工作。当我点击按钮时,当前活动应该重新加载 - 就像设备重启一样。
由于
答案 0 :(得分:121)
public void onClick (View v){
Intent intent = getIntent();
finish();
startActivity(intent);
}
答案 1 :(得分:37)
答案 2 :(得分:22)
在活动中,您可以调用recreate()
来“重新创建”活动
(API 11 +)
答案 3 :(得分: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();
}
答案 4 :(得分:8)
这对我来说有用here。
只需使用它或将其添加到静态类助手中,只需从项目中的任何一个调用它。
/**
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);
}
}
答案 5 :(得分:4)
它应该重新开始并删除先前当前活动的所有实例。
不,它不应该。
它应该就地更新其数据(例如,requery()
Cursor
)。然后就不会担心“先前当前活动的实例”了。
答案 6 :(得分:4)
你可以试试这个:
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);
答案 7 :(得分:3)
您可以使用:
startActivity(MyClass.this, MyClass.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
答案 8 :(得分:2)
最简单的方法是致电onCreate(null);
,您的活动就像新的一样。
答案 9 :(得分:1)
您可以使用它从自身内部刷新活动。
myList = [['Amy',2,3,4], ['Jack',3,4,None]]
def compute_mean_pc(myList):
result = []
for name, *values in myList: # iterate over each sub-list getting name and next values
values = list(filter(None,values)) # Remove any 'None' from the values
result.append([name, sum(values)/len(values)]) # Append a list [name,mean(values)] to the result list
return result
result = compute_mean_pc(myList)
print(result) # [['Amy', 3.0], ['Jack', 3.5]]
答案 10 :(得分:0)
从对话框到要刷新的活动。如果不是第一次活动!
像这样: mainActivity >> objectActivity >> 对话框
在对话框类中:
@Override
public void dismiss() {
super.dismiss();
getActivity().finish();
Intent i = new Intent(getActivity(), objectActivity.class); //your class
startActivity(i);
}
答案 11 :(得分:0)
简单方法
Intent intent=new Intent(Current_Activity.this,Current_Activity.class);
startActivity(intent);
finish();
答案 12 :(得分:0)
我认为最适合您的选择是在布局中使用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);
}
}
);
有关详细信息click this link
答案 13 :(得分:-1)
您可以调用此方法:
recreate();