gpt4 book ai didi

android - onBackPressed() 的问题不是刷新 fragment

转载 作者:行者123 更新时间:2023-11-30 02:13:33 34 4
gpt4 key购买 nike

在我的 Android 应用程序中,我的 Activity 中有两个 Fragment,A 和 B。

在“A” fragment 中,我开发了一种形式,在这种形式中,一些数据来自数据库。我使用了 fragment 事务并将 fragment “A”替换为 fragment “B”。

这是我用 FragmentB 替换 Fragment 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” fragment 中,我从服务器获取数据并将其存储在 SQLite 数据库中,以便我们可以在应用程序中使用最新数据。当我单击后退按钮时,它会返回到 fragment “A”,但 fragment “A”中的所有数据都不会根据新加载的数据进行刷新。

这是我重写 onBackPressed() 方法的主要 Activity 代码:

@Override    
public void onBackPressed() {

// TODO Auto-generated method stub
getFragmentManager().popBackStack();
}

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

有人知道我怎样才能实现吗?

最佳答案

如果你想添加到返回堆栈,那么你应该使用 fragmentTransaction.add()replace 将只替换 fragment 。

处理来自后台堆栈的 pop 的正确位置是通过像这样使用 OnBackStackChangedListener

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

很好的引用 Fragments onResume from back stack

关于android - onBackPressed() 的问题不是刷新 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29763480/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com