在片段

时间:2016-07-28 06:57:34

标签: android android-fragments bundle android-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 Adapter类传递bundle值

3 个答案:

答案 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是否相同。