在片段中调用时 Bundle 返回 Null

Bundle returning Null when called in fragment

我正在尝试将字符串从 Adapter 传递到 Bundle 中的片段,但在我的片段中得到的是 null

这是我将字符串添加到 Bundle 的代码

            Bundle bundle=new Bundle();
            bundle.putString("id",expense_id);
            AddExpenseFragment fragment=new AddExpenseFragment();
            fragment.setArguments(bundle);
            UiActivity.startAddExpense(context);

这是我的代码,用于检索 Fragment 中的 Bundle 值

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    super.onCreateView(inflater, container, savedInstanceState);
    View view=inflater.inflate(R.layout.activity_fragment_add_expense,container,false);
    String id=this.getArguments().getString("id");
    return view;
}

我正在从我的 recyclerView 适配器传递包值 class

试试这个:

Bundle bundle = this.getArguments();
String id=bundle.getString("id");

这里的问题很简单。您正在创建片段并为其设置数据,这很好,

AddExpenseFragment fragment=new AddExpenseFragment();
fragment.setArguments(bundle);

但问题出在你的

UiActivity.startAddExpense(context);

您必须用 AddExpenseFragment 的新实例 替换,因为您无法将新创建的片段实例(设置了参数)传递给startAddExpense() 方法。

解决方法很简单,将新创建的片段对象像这样传递给startAddExpense()即可,

UiActivity.startAddExpense(context, fragment);

然后在方法内部替换或添加这个新片段并且不要实例化任何新片段对象

从你的代码中,很难找到problems.just给你一些建议。 首先,检查您的变量 expense_id 是否为空。 其次检查自己创建的AddExpenseFragment和实际展示的是否一样