gpt4 book ai didi

java - Android:从另一个打开 fragment

转载 作者:行者123 更新时间:2023-11-29 20:07:12 24 4
gpt4 key购买 nike

我是 Android 新手,这是我的第二个应用程序。我正在创建一个选项卡式 Activity ,其中第一个 fragment 有一个用于创建新任务的表单,第二个 fragment 有所有已保存任务的列表,第三个 fragment 将在第二个 fragment 中从列表中选择时显示对任务的评论分段。第三个 fragment 也应该像聊天 Activity 一样,在您输入评论并点击发送按钮时发布评论。当我从单独的 Activity(下面链接中 GitHub 分支中的 CommentsActivity.java)实现此聊天 Activity 时,该应用程序完全按预期运行。但是,当我尝试从第三个 Fragment 实现相同的代码时,我遇到了以下问题:

  • 在启动 CommentsFragment 之前,我必须点击列表项(在 TasksFragment.java 中)两次。

  • 该 fragment 保持空白,不显示任何详细信息或评论。

  • 标题栏乱七八糟。当 CommentsFragment 首次启动时,它会正确设置标题。但是,当我在 fragments 之间滑动时,它随后变成空白。有时它甚至会显示最后一个打开 fragment 的标题,而不是当前打开 fragment 的标题。

你可以在这里找到我所有的代码:https://github.com/geekskool/android-teamwork/tree/only_fragments

其他细节:我在 TasksFragmentCommentsFragment 之间传递数据,使用与主要 Activity 交互的 fragment 交互方法 --AddTask.java。这是我知道的唯一方法。如果有更好的方法,请告诉我。

最佳答案

我看到了您的分支并注意到您正在使用 ViewPager 并尝试使用 FragmentTransaction 来更新 ViewPager 中的 fragment 。这不起作用,因为在创建 ViewPagerAdapter 时已经创建了 fragment ,并且无法通过 FragmentTransaction 附加到 ViewPager

我是这样解决的。由于我使用的是 ViewPager,因此使用 FragmentTransaction 无效:

错误的方式:

FragmentManager fm = getSupportFragmentManager();
android.support.v4.app.FragmentTransaction ft = fm.beginTransaction();
CommentsFragment commentsFragment = CommentsFragment.newInstance(mTaskId, mTaskName);
ft.replace(R.id.container, commentsFragment);
ft.addToBackStack(null);
ft.commit();

使用 ViewPager,我必须更新填充它的适配器,然后将其设置为正确的 fragment 。这就是我所做的:

正确的方法:

在TasksFragment中的onListItemClick()中,调用这个接口(interface)方法onFragmentInteraction。然后在主 Activity AddTask 中,按如下方式实现它:

@Override
public void onFragmentInteraction(String taskId, String taskName, String assigneeRef) {
CommentsFragment commentsFragment = CommentsFragment.newInstance(taskId, taskName);
mSectionsPagerAdapter.fragmentList.remove(2);
mSectionsPagerAdapter.fragmentList.add(commentsFragment);
mSectionsPagerAdapter.notifyDataSetChanged();
mViewPager.setCurrentItem(2);
}

希望这对您和其他在 ViewPager 中更新 Fragments 时遇到问题的人有所帮助。

关于java - Android:从另一个打开 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35499158/

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