我正在尝试将字符串中的字符串从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 Adapter类传递bundle值
答案 0 :(得分:1)
问题很简单。您正在创建一个片段并将数据设置为它,这很好,
AddExpenseFragment fragment=new AddExpenseFragment();
fragment.setArguments(bundle);
但问题在于你的
UiActivity.startAddExpense(context);
您必须替换AddExpenseFragment
的新实例,因为您不能将新创建的片段实例(设置参数设置)传递给{{1}方法。
解决方案很简单,只需将新创建的片段对象传递给startAddExpense(),就像这样,
startAddExpense()
然后在方法内部替换或添加这个新片段,不实例化任何新的片段对象。
答案 1 :(得分:0)
试试这个:
Bundle bundle = this.getArguments();
String id=bundle.getString("id");
答案 2 :(得分:0)
从您的代码中,很难找到问题。请提出一些建议。 首先,检查变量expense_id是否为null。 其次,检查您创建并真正显示的AddExpenseFragment是否相同。