Android刷新当前活动

时间:2011-07-01 12:30:12

标签: android

我想编写我的Android应用程序以刷新其在ButtonClick上的当前活动。我在活动布局的顶部有一个按钮可以完成这项工作。当我点击按钮时,当前活动应该重新加载 - 就像设备重启一样。

由于

14 个答案:

答案 0 :(得分:121)

public void onClick (View v){
    Intent intent = getIntent();
    finish();
    startActivity(intent);
}

答案 1 :(得分:37)

你可以试试这个

finish();
startActivity(getIntent());

之前曾问过这个问题: How do I restart an Android Activity

答案 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();