如何使用底部导航将数据从活动发送到片段

如何解决如何使用底部导航将数据从活动发送到片段

大家好,请帮我

我想将数据从活动发送到片段,但我使用底部导航

我使用 Intent 将数据从活动 1 发送到活动 2(活动 2 具有底部导航)

我想将数据发送到 Home_Fragment 我应该使用什么?

  BottomNavigationView bottomNav =   findViewById(R.id.top_navigation);
    bottomNav.setonNavigationItemSelectedListener(navListener);
    getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,new Home_Fragment()).commit();
}
private BottomNavigationView.OnNavigationItemSelectedListener navListener =
        new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {

                Fragment selectedItem = null;
                switch (menuItem.getItemId()){

                    case R.id.navigation_home:
                        selectedItem = new Home_Fragment();
                        break;

                    case R.id.navigation_project:
                        selectedItem = new Project_Fragment();
                        break;

                    case R.id.navigation_persons:
                        selectedItem = new Persons_Fragment();
                        break;

                    case R.id.navigation_accounts:
                        selectedItem = new Accounts_Fragment();
                        break;

                    case R.id.navigation_other:
                        selectedItem = new Others_Fragment();
                        break;
                }
                getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,selectedItem).commit();
                return true;

            }
        };

解决方法

只需从自身初始化您的片段并在 initialize 方法中传递任何数据。

例如,如果我们想将 String 值传递给 Fragmen,我们应该在 fragment 内使其像这样:

public static YourFrament getInstance(String example) {
        YourFrament fragment = new YourFrament();
        Bundle bundle = new Bundle();
        bundle.putString("key",example);
        fragment.setArguments(bundle);
        return fragment;
    }

要获取数据,您应该像这样从片段内的 onCreate 方法接收数据:

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null)
            String value = getArguments().getString("key");
    }

所以从活动中我们应该像这样调用片段:

case R.id.navigation_accounts:
             selectedItem = YourFrament.getInstance("string example");
          break;
,

假设您想在初始化 fragment 时传递数据,您可以尝试创建一个 Bundle 对象,将您的数据添加到包中。

然后使用传递给您的包的静态 newInstance(Bundle args) 初始化您的片段。

所以基本上你的片段看起来像这样。

public class HomeFragment extends Fragment{

public static Fragment newInstance(Bundle args){ 
// get your data and do whatever
return new HomeFragment(); }

然后在您的 onNavigationItemSelected() 方法中

 case R.id.navigation_home:

 Bundle bundle = new Bundle();
 bundle.putInt(AGE,22); // put whatever data you want to pass to the fragment.

 selectedItem = HomeFragment.newInstance(bundle)
 break;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?