我正在从活动A转移到BI,想要点击活动B中的按钮,我应该回到活动A并且应该刷新它(我在活动A中进行api调用)。但是如果用户正在移动只需在设备上反向从B回到A,它就不应该刷新。有没有更好的方法来做这个而不重新创建活动A?
答案 0 :(得分:1)
您可以使用Intent.startActivityForResult()启动活动B,并在Button clickListener上回答此请求。
OnBackPress默认行为不会对您之前的活动做任何事情。
请注意生命周期。
处理此问题的另一种方法是: - 使用Application类提供的单例。 - SharedPreferences更新onResume(活动A)的处理。
强制自己为小项目使用Fragments。
此致
答案 1 :(得分:0)
答案 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中,在onCreate
和onStart
中添加以下行:
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'