如何在android中更新“MainActivity”片段中的Listview?

How to update Listview inside a fragment from "MainActivity" in android?

提问人:Udo 提问时间:7/1/2019 最后编辑:Udo 更新时间:7/2/2019 访问量:243

问:

我不知道在“this”、“R.id.fragment_container”或“currentFragment”中放入什么才能使代码正常工作。我有一个带有选项卡的活动,因此有三个片段。在这个“MainActivity”中,我想更新片段的视图。代码位于 MainActivity 中。

以下是通过 stackoverflow 刷新片段的两种变体。

在“刷新或强制重绘片段”中,它说“要刷新 ListView,您需要在 ListView 的适配器上调用 notifyDataSetChanged()。如何做到这一点?

变式1

Fragment currentFragment = getActivity().getFragmentManager().findFragmentById(R.id.fragment_container);
if (currentFragment instanceof "NAME OF YOUR FRAGMENT CLASS") {
 FragmentTransaction fragTransaction =   (getActivity()).getFragmentManager().beginTransaction();
 fragTransaction.detach(currentFragment);
 fragTransaction.attach(currentFragment);
 fragTransaction.commit();}
}

变式 2


if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            getFragmentManager().beginTransaction().detach(this).commitNow();
            getFragmentManager().beginTransaction().attach(this).commitNow();
        } else {
            getFragmentManager().beginTransaction().detach(this).attach(this).commit();
        }

你能帮我使代码工作吗?在“这个”中,有一个预期的片段。

Android Fragment 本次 刷新

评论


答:

0赞 Abhishek Kumar 7/1/2019 #1

尝试使用:

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.setReorderingAllowed(false);
transaction.detach(fragment).attach(fragment).commitAllowingStateLoss();

评论

0赞 Udo 7/2/2019
我必须在“片段”中插入什么?java-class-filename?
0赞 Abhishek Kumar 7/2/2019
片段片段 = new FragmentName();其中 FragmentName 是要打开的片段的名称。
0赞 Udo 7/2/2019
stackoverflow.com/questions/15262747/ 中,它说“要刷新 ListView,您需要在 ListView 的适配器上调用 notifyDataSetChanged()。你能帮我做这件事吗?