如何刷新片段数据时,来自上一个屏幕的android?

nhaq1z21  于 2023-06-20  发布在  Android
关注(0)|答案(1)|浏览(125)

我想刷新片段的数据时,它来自前一个屏幕。
下面是它看起来的代码。

public class SettingsHomepageActivity extends FragmentActivity {

 @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    showFragment(new TopLevelSettings(), R.id.main_content);
    }
    
    private void showFragment(Fragment fragment, int id) {
        final FragmentManager fragmentManager = getSupportFragmentManager();
        final FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        final Fragment showFragment = fragmentManager.findFragmentById(id);

        if (showFragment == null) {
            fragmentTransaction.add(id, fragment);
        } else {
            fragmentTransaction.show(showFragment);
        }
        fragmentTransaction.commit();
    }
}

TopSettings extends Fragment {

@Override
    public void onAttach(Context context) {
        super.onAttach(context);
        use(SupportPreferenceController.class).setActivity(getActivity());
    }
}

在上面的代码中,您可以看到showFragment仅在onCreate()中显示。现在,当数据在SupportPreferenceController中更新并且用户按下home按钮时,它会转到onStart(),因此不会调用TopSettings,因此当数据更新时,Fragment不会刷新。
我在SettingsHomePageActivity中使用了下面的代码,

@Override
protected void onRestart() {
    this.recreate();
    super.onRestart();
}

但是上面的代码总是在我们转到任何页面时不断刷新Fragments。
如何克服这一点?我需要刷新片段的数据,而不是每次刷新整个片段。

rsaldnfx

rsaldnfx1#

尝试刷新onResume()函数中的数据。正如我们所知道的,当我们回到上一个屏幕时,在这种情况下onResume()被调用,所以如果你想刷新或更新数据,你应该在onResume()函数中实现代码。还有一个建议是尽量维护像needToRefreshData=true这样的标志,并在onResume()中检查它,否则每次都会不必要地刷新它。

相关问题