回到之前的活动并刷新它

时间:2016-05-19 15:16:01

标签: android android-activity

我正在从活动A转移到BI,想要点击活动B中的按钮,我应该回到活动A并且应该刷新它(我在活动A中进行api调用)。但是如果用户正在移动只需在设备上反向从B回到A,它就不应该刷新。有没有更好的方法来做这个而不重新创建活动A?

6 个答案:

答案 0 :(得分:1)

您可以使用Intent.startActivityForResult()启动活动B,并在Button clickListener上回答此请求。

OnBackPress默认行为不会对您之前的活动做任何事情。

请注意生命周期。

处理此问题的另一种方法是: - 使用Application类提供的单例。 - SharedPreferences更新onResume(活动A)的处理。

强制自己为小项目使用Fragments。

此致

答案 1 :(得分:0)

您可以使用 LocalBroadcastManager 轻松完成。看看这个帖子

Table 1-1

how to use LocalBroadcastManager?

答案 2 :(得分:0)

不,是的。活动A没有正常的方式知道活动B是如何结束的。但是你可以通过另一种方式从B发回东西。见@Masum的答案

答案 3 :(得分:0)

是。如果您希望刷新Activity A,只需通过startActivity(new Intent(this, A.class))重新启动即可。

如果您不希望A刷新,请在finish() B中调用Activity方法。

例如,在活动B的finish()中调用onBackPressed

答案 4 :(得分:0)

我认为最好的解决方案是使用onRestart()

 @Override
public void onRestart() { 
    super.onRestart();
    //the activity is restared when click back and you could add what do you want for refresh here. 
}

答案 5 :(得分:0)

Okey我记得EventBus。我认为你可以使用基于事件的解决方案。

在您的活动A中,在onCreateonStart中添加以下行:

if (!EventBus.getDefault().isRegistered(this)) {
        EventBus.getDefault().register(this);
    }

并将此@Subscribe方法添加到您的活动A:

 @Subscribe
 public void onMessageEvent(MyEvent event){
  //handle event
  //if any data coming handle data
  //trigger recreating methods etc ...
 }

像这样创建新类:

public class MyEvent {
//you can add any values to send datas another activity

public MyEvent (){
  }

}

在Button onClick方法的活动B中:

EventBus.getDefault().post(new MyEvent());

将此添加到您的依赖项:

compile 'org.greenrobot:eventbus:3.0.0'

更多信息:Eventbus,您还可以查找Otto