我有一个活动A,它有一个feed类接口。每个Feed项都有一个文本,表示该项目的评论数量。现在,如果在该项目上,我点击评论并转到新活动B,通过活动B添加评论并按回以返回活动A.当我添加评论时,信息将反映在后端。但问题是,当我按下时,保存的活动A实例显示注释数量未更新,因为没有从活动A调用后端。
做这样的事情的标准方法是什么?在按下某些活动时,我应该如何刷新活动堆栈中的上一个屏幕?
以下是一些相关的代码段:
$challenge = $obj['object']['property']
答案 0 :(得分:5)
在活动A中启动活动A时调用onPause()。在活动B中调用后退按钮后,在活动A中调用onResume()。
您应该在onResume函数中加载注释(api / server call)而不是活动A的onCreate函数,以便每次恢复活动时都会刷新注释。
答案 1 :(得分:2)
您可以使用
开始“结果”的活动B'int activityBrequestCode = 0;
startActivityForResult(intent, activityBrequestCode);
并在活动B中使用
按下后退按钮时设置结果@Override
public void onBackPressed() {
setResult(RESULT_OK);
super.onBackPressed();
}
然后将在
中通知您的活动A.@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == activityBRequestCode && resultCode == RESULT_OK){
// refresh
}
}
答案 2 :(得分:2)
从活动生命周期中可以看出,执行此操作的理想位置是onRestart()
回调方法:
@Override
protected void onRestart() {
super.onRestart();
// this is your backendcall
backendCall();
}
答案 3 :(得分:1)
我认为您应该从后端获取该Feed的评论数量并保存到变量并通过意图传递,然后您可以将其放在该Feed的总评论中。
Bcoz意图是跨活动发送数据的最快方式
答案 4 :(得分:1)
尝试以下,
@Override
public void onRestart() {
super.onRestart();
//When BACK BUTTON is pressed, the activity on the stack is restarted
//Do what you want on the refresh procedure here
}