Kul*_*dav 3 android android-fragments
我试图将参数传递给a Fragment.
点击Viewa后Fragment,我将我替换Fragment为另一个并将数据传递给下一个Fragment.
我的点击动作:
public void onClick(View view) {
Bundle args = new Bundle();
args.putSerializable("order", orders.get(position));
OrderDetailFragment orderDetailFragment = new OrderDetailFragment();
orderDetailFragment.setArguments(args);
FragmentManager fragmentManager = ((AppCompatActivity) context).getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.order_activity_content_frame, orderDetailFragment)
.addToBackStack("orderDetails")
.commit();
}
Run Code Online (Sandbox Code Playgroud)
但在我的目的地Fragment,savedInstanceState即将来临null.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
order = (Order) savedInstanceState.getSerializable("order");
View rootView = inflater.inflate(R.layout.fragment_order_details, container, false);
TextView date = (TextView) rootView.findViewById(R.id.order_detail_date);
date.setText((CharSequence) order.getCreatedOn());
return rootView;
}
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚到底错过了什么?
savedInstanceState包含保存在数据onSaveInstanceState(),这是你之前调用Activity/ Fragment是越来越由OS杀死(回收例如,或者因为一个方向的改变内存).
打电话getArguments()让Bundle你得救setArguments():
order = (Order) getArguments().getSerializable("order");
Run Code Online (Sandbox Code Playgroud)
此外,建议Fragment使用参数实例化的做法是通过静态newInstance()方法,如下所示:
public static OrderDetailFragment newInstance(Order order) {
Bundle args = new Bundle();
args.putSerializable(KEY_ORDER, order);
OrderDetailFragment fragment = new OrderDetailFragment();
fragment.setArguments(args);
return fragment;
}
Run Code Online (Sandbox Code Playgroud)
然后你实例化Fragment这样的:
OrderDetailFragment orderDetailFragment = OrderDetailFragment
.newInstance(orders.get(position));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2549 次 |
| 最近记录: |