onBackPressed()的问题不是刷新片段



在我的Android应用程序中,我的活动中有两个片段,A和B。

在"A"片段中,我开发了一个表单,在该表单中,一些数据来自数据库。我使用了一个片段事务,并用片段"B"替换了片段"a"。

这是我用片段B替换片段A的代码

final FragmentManager fragmentManager = getFragmentManager();   
final FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction();  
FragmentB reload = new FragmentB();  
fragmentTransaction.replace(android.R.id.content,reload);
fragmentTransaction.addToBackStack(null);  
fragmentTransaction.commit();

在"B"片段中,我从服务器获取数据并将其存储在SQLite数据库中,这样我们就可以在应用程序中使用最新的数据。当我点击后退按钮时,它会返回到片段"A",但片段"A)中的所有数据不会根据新重新加载的数据进行刷新。

这是我覆盖onBackPressed()方法的主要活动的代码:

@Override    
public void onBackPressed() {
// TODO Auto-generated method stub
getFragmentManager().popBackStack();
}

当我点击主活动的后退按钮时,我想用数据库中的最新值刷新片段A的数据。据我所知,我们不能在片段B中进行反击事件。如果我错了,请纠正我,并建议我如何解决问题。

有人知道我怎样才能做到吗?

如果要添加到后堆栈,则应使用fragmentTransaction.add()。CCD_ 3将刚好替换该片段。

同样,处理后台弹出的正确位置是通过使用类似于的OnBackStackChangedListener

getFragmentManager().addOnBackStackChangedListener(
new FragmentManager.OnBackStackChangedListener() {
@Override
public void onBackStackChanged() {
// find your fragment and do updates
}
});

一个很好的参考从后堆栈恢复碎片

按下后,将调用FragmentonResume,以便您可以在onResume 中写入刷新代码

为了更好地理解,请参阅下面的链接

http://developer.android.com/guide/components/fragments.html

最新更新