为了账号安全,请及时绑定邮箱和手机立即绑定

在将数据通过捆绑包从活动传递到片段时获取 null

在将数据通过捆绑包从活动传递到片段时获取 null

慕森王 2022-08-03 10:42:04
通过捆绑包传递时在途中丢失数据,我得到尝试在 String bundlePassData = this.getArguments().getString(“tagName”) 上的空对象引用上调用虚拟方法 'java.lang.String.String android.os.bundle.getString(java.lang.String)'这是我的代码示例。主要活动-> tagsView.setOnItemClickListener(new AdapterView.OnItemClickListener() {        @Override        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {            Bundle bundle = new Bundle();            TextView textView = (TextView) view.findViewById(R.id.tagName);            String selectedItemName = textView.getText().toString();            bundle.putString("tagName", selectedItemName);            TaskAssignFragment taskAssignFragment = new TaskAssignFragment();            taskAssignFragment.setArguments(bundle);            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();            transaction.commit();            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,                    new TaskAssignFragment()).addToBackStack(null).commit();            Log.i("ListView", selectedItemName);        }    });TaskAssignFragment->@Nullable@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {    View view = inflater.inflate(R.layout.fragment_task_assign, container, false);    TextView test = view.findViewById(R.id.testerView);    String bundlePassData = this.getArguments().getString("tagName");    test.setText(bundlePassData);    return view;}我应该试试吗?但是,如果我需要将数据作为变量,而不仅仅是在函数中,因为我会在.interfacesfragment
查看完整描述

4 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

在代码中,替换时将创建新片段。


TaskAssignFragment taskAssignFragment = new TaskAssignFragment();

            taskAssignFragment.setArguments(bundle);


getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,

                    new TaskAssignFragment()).addToBackStack(null).commit();

使用已在其中设置参数的已创建的片段实例


  getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,

                   taskAssignFragment).addToBackStack(null).commit();


查看完整回答
反对 回复 2022-08-03
?
茅侃侃

TA贡献1842条经验 获得超21个赞

您正在创建新对象,同时替换片段。


        TaskAssignFragment taskAssignFragment = new TaskAssignFragment();

        taskAssignFragment.setArguments(bundle);


        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,

                taskAssignFragment).addToBackStack(null).commit();

试试这个


查看完整回答
反对 回复 2022-08-03
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

tagsView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override

        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

            Bundle bundle = new Bundle();

            TextView textView = (TextView) view.findViewById(R.id.tagName);

            String selectedItemName = textView.getText().toString();

            bundle.putString("tagName", selectedItemName);


            TaskAssignFragment taskAssignFragment = new TaskAssignFragment();

            taskAssignFragment.setArguments(bundle);


            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

            transaction.commit();


            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,

                    taskAssignFragment).addToBackStack(null).commit();


            Log.i("ListView", selectedItemName);

        }

    });

请尝试此代码,创建一个新的 TaskAssignFragment() 实例,并在没有参数的情况下传递它


查看完整回答
反对 回复 2022-08-03
?
慕村225694

TA贡献1880条经验 获得超4个赞

您可以直接在片段上调用方法,例如:


TaskAssignFragment taskAssignFragment = new TaskAssignFragment();

// Call here your own method (from fragment)

taskAssignFragment.setSelectedItemName(selectedItemName);

在你的片段中:


public void setSelectedItemName(String selectedItemName) {

    // Store data as field in class

    this.selectedName = selectedItemName

}

其中 是类中的字段。selectedName


查看完整回答
反对 回复 2022-08-03
  • 4 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信