Android刷新当前活动

Android刷新当前活动,android,Android,我想对我的android应用程序进行编程,以便在按钮单击时刷新其当前活动。我在活动布局的顶部有一个按钮,可以完成这项工作。当我点击按钮时,当前活动应该再次重新加载-就像设备重启一样 谢谢你可以试试这个 finish(); startActivity(getIntent()); 这个问题以前被问过: 它应该重新启动并删除以前当前活动的所有实例 不,不应该 它应该就地更新数据(例如,requery()光标)。这样就没有“以前当前活动的实例”可担心了。这是一种刷新按钮方法,但在我的应用程序中效果很

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

谢谢你可以试试这个

finish();
startActivity(getIntent());
这个问题以前被问过:

它应该重新启动并删除以前当前活动的所有实例

不,不应该


它应该就地更新数据(例如,
requery()
光标)。这样就没有“以前当前活动的实例”可担心了。

这是一种刷新按钮方法,但在我的应用程序中效果很好。在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();

}

最简单的方法是调用onCreate(null),您的活动将像新的一样。

您可以使用:

startActivity(MyClass.this, MyClass.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

在活动中,您可以调用
recreate()
来“重新创建”活动 (API 11+)

您可以尝试以下方法:

        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);

这就是我所看到的

只需使用它或将其添加到静态类帮助器中,然后从项目中的任意位置调用它即可

/**
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);
   }
}

从对话框到要刷新的活动。如果不是第一次活动
像这样:mainActivity>objectActivity>对话框
在对话类中:

  @Override
public void dismiss() {
    super.dismiss();
   getActivity().finish();
    Intent i = new Intent(getActivity(), objectActivity.class);  //your class
    startActivity(i);

}
试试这个 简单方法

 Intent intent=new Intent(Current_Activity.this,Current_Activity.class);
    startActivity(intent);
    finish();

我认为最好的选择是在布局中使用SwipeRefreshLayout视图。 然后设置刷新侦听器

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);
                }
            }
    );

有关详细信息,请调用此方法:

recreate();

您可以使用它从活动本身刷新活动

finish();
startActivity(getIntent());


我有这段代码,但它基本上显示了我们从一个活动移动到另一个活动的动画。而且我以前的活动还活着。我想再次加载所有内容。
intent.addFlags(intent.FLAG\u活动\u否动画)这很重要,感谢@OtraMy listView没有使用此方法刷新。为什么?
Intent-Intent=新的意图(YourActivity.this,YourActivity.class);完成();星触觉(意向)最佳解决方案它将刷新所有内容。ofc如果你想保存一些数据,你可以在完成页面之前使用shared Pref@Otra@ShineI有这段代码,但它基本上显示了我们从一个活动移动到另一个活动的动画。而且我以前的活动还活着。我希望所有内容都应该重新加载。从您自己的问题“它应该重新开始并删除以前当前活动的所有实例。”如果您不希望活动加载动画,@Greg的回答就是这样的。弄清楚你想要刷新什么,然后手动刷新。请你再详细说明一下……在我的活动中,一个异步线程正在后台运行。当我想重新加载此活动时,此异步线程实例不会被删除,甚至会创建两个实例—一个是以前的,一个是新的…@Vivek_Android_Developer:你就是那个分叉线程的人。刷新UI时,不要启动第二个线程。我将检查dat..并让您知道..@Commonware但如果您的用户在恢复旧活动和更新光标支持的视图之间单击了一条过时的信息,该怎么办?@mattblang:如果这是一个危险,请在恢复时清除旧数据,设置一个
ProgressBar
或其他指示器,然后在可用时加载新的
光标。这听起来相当危险。[对于11之前的API,您不能使用recreate()。我用这种方式解决了:[1][1]:这只会在您当前的意图没有来自任何先前意图的数据时起作用。放置此项后。。。“活动”会不断重新启动。@AbuRuqaiyah请确保您正在onClickListener或任何您想要的触发器中调用它。另外,请确保您不是从循环中调用此函数,也不是每次应用程序启动时都可能执行的函数——希望您理解此过程谢谢,这对像charm这样的meWorks有效,谢谢您提供的解决方案!这个有效!它没有动画!
finish();
startActivity(getIntent());