Android - 片段,使用对实例方法的引用

时间:2016-08-17 09:31:14

标签: android android-fragments

我有特定的片段,它们将在后台线程中执行操作(或者将启动结果的活动),我想设置一个回调(来自托管活动),以便在这些操作之后从片段中获取一些数据,实例:

FragmentManager fm = getFragmentManager();
TakePhotoFragment takePhotoFragment = (TakePhotoFragment) fm.findFragmentById(R.id.frTakePhoto);
takePhotoFragment.setListener(new TakePhotoFragment.OnNewBitmapListener() {
  @Override
  public void onNewBitmap(Bitmap bitmap) {
    // do things in the activity
  }
});

我已经读过使用Bundle s将参数提供给片段更安全,但有几种情况我希望使用Bundles传递对象引用而不是简单的String数据。使用FragmentManager获取引用并在其上调用方法是否有任何问题?如果是,哪些是解决方法?

1 个答案:

答案 0 :(得分:2)

如果尚未创建片段,请使用bundle,否则使用实例。

当android重新创建你的片段时,传递bundle becoz会更安全,你的传递数据不会丢失。

如果您使用实例1传递数据,则必须自己保存并恢复该数据

注意:您可以通过使复杂对象成为可分区或可序列化来传递复杂对象。 也不推荐在bundle中传递大数据

如果你的片段是用xml定义的,你可以通过findFragmentById()类的fragmentManager来获取实例