android 如何在java中重新启动一个fragment

eqqqjvef  于 2023-05-05  发布在  Android
关注(0)|答案(3)|浏览(234)

我在android中有一个片段,我想在某个任务后重新启动片段,这样如果我有一些文本字段并在屏幕上检查,它们就会得到它们的初始状态。

public class upload_notice_fragment extends Fragment {

    public upload_notice_fragment(Activity activity) {
        this.activity = activity;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View fragment = inflater.inflate(R.layout.upload_notice_fragment, container, false);
        uploadData();
        return fragment;
    }

    private void uploadData() {
        FirebaseFirestore storeReference = FirebaseFirestore.getInstance();
        HashMap<String, String> map = new HashMap<>();
        map.put("date", new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault()).format(new Date()));
        map.put("time", new SimpleDateFormat("hh:mm a", Locale.getDefault()).format(new Date()));
        storeReference.collection("date-time").add(map)
                .addOnSuccessListener(documentReference -> {
                    // Restart the fragment here......
                    FragmentManager fragmentManager = getSupportFragmentManager();
                    MyFragment myFragment = new MyFragment();
                    fragmentManager.beginTransaction()
                                   .replace(R.id.fragment_container, myFragment)
                                   .commit();
                })
                .addOnFailureListener(e -> {
                    Toast.makeText(getContext(), "Something Went Wrong!", Toast.LENGTH_SHORT).show();
                });
    }
}

这就是我想做的。
我已经尝试实现您提供的代码,但它导致Image For Reference

lg40wkob

lg40wkob1#

您可以使用以下代码再次调用该片段

FragmentManager fragmentManager = getSupportFragmentManager();
  MyFragment myFragment = new MyFragment();
  fragmentManager.beginTransaction()
           .replace(R.id.fragment_container, myFragment)
           .commit();

而不是'MyFragment'使用您的片段

aor9mmx1

aor9mmx12#

您可以使用以下代码重新启动片段:

FragmentManager fm = getSupportFragmentManager();
YourFragment yf = new YourFragment();
fm.beginTransaction().replace(R.id.YOUR_FRAGMENT_CONTAINER, yf).commit();

您必须将YOUR_FRAGMENT_CONTAINER替换为您的片段容器,将YourFragment替换为您的片段名称。

f8rj6qna

f8rj6qna3#

当你在执行任务时,你可以简单地通过使用下面的代码行来删除片段://删除当前片段

ft.remove(currentFragment);

然后通过编写代码再次添加片段:

YourFragment fragment = new YourFragment();
ft.add(R.id.fragment_container, fragment, "YOUR_OWN_FRAGMENT_TAG");
ft.commit();

因此,您更新的数据将再次获取,或者您可以简单地创建一个更新数据的函数,方法是在任务完成时传递并调用它。

相关问题