返回时的Android刷新活动

我需要一些帮助来刷新我的应用程序中的一个活动。 我正在使用标签主机活动并连接到Web服务并从我的一个子活动中下载一些数据。 当我在我的子活动中按下同步按钮时,我正在开始一个不在标签主机中的新活动,当同步完成后,它将返回到它的父(子活动)。 我想要实现的是当我返回它时刷新活动。 当我通过互联网查看时,我发现最好的选择是使用startActivityForResult ,但我真的不明白如何使用它以及如何在从完成的活动中收到结果时刷新活动。

如果有人能帮助我,我会很高兴。谢谢!

编辑:

我正在使用此代码,它甚至没有显示登录onActivityResult

MyCollectionId.class:

 Intent intent = new Intent(MyCollectionId.this, Synchronization.class); intent.putExtra("process", 2); startActivityForResult(intent, 1); @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(resultCode==RESULT_OK){ Log.e("","OnActivityResult"); Intent refresh = new Intent(this, MyCollectionId.class); startActivity(refresh); this.finish(); } } 

Synchronization.class:

 Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); setResult(RESULT_OK,intent); finish(); 

按下按钮:

 Intent intent = new Intent(this, SyncActivity.class); //intent.putExtra("someData", "Here is some data"); startActivityForResult(intent, 1); 

然后在同一个Activity类中:

  @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(resultCode==RESULT_OK){ Intent refresh = new Intent(this, InitialActivity.class); startActivity(refresh); this.finish(); } } 

同步活动将具有:

 setResult(RESULT_OK, null); finish(); 

另一个棘手的方法是在onRestart()上开始你的活动

 @Override public void onRestart(){ super.onRestart(); Intent previewMessage = new Intent(StampiiStore.this, StampiiStore.class); TabGroupActivity parentActivity = (TabGroupActivity)getParent(); parentActivity.startChildActivity("StampiiStore", previewMessage); this.finish(); } 

那应该是诀窍。 (在此代码中,我将展示使用自定义TabActivity管理器时的方式。)

您应该在方法的父活动中处理以“startActivityForResult”开头的活动结果:

 @override public void onActivityResult(int requestCode, int resultCode, Intent data) { //... } 

根据结果​​,您可以再次调用一个代码,该代码负责显示父活动中的信息(可能是您将其放入onResume()方法或类似)。

我建议你将负责信息呈现的所有逻辑移到一个单独的方法中。 并在收到结果后调用它。 而不是重新启动您的父活动。

如果使用startActivityForResult方法启动第二个活动,则返回第一个活动时,将调用第一个活动的onActivityResult

如果您覆盖它,则可以从那里刷新您的活动。

在此处和此处查看更多信息

使用带有请求代码的startActivityForResult调用子活动,从子Activity调用SetResult。 子活动完成后,您可以在onActivityResult方法中更新父活动

 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); //Check the result and request code here and update ur activity class } 

这是一个示例http://rahulonblog.blogspot.com/2010/05/android-startactivityforresult-example.html