Android如何优雅地向Fragment传递参数

kekenai
发布于 2020-9-21 14:50
浏览
0收藏

前言


很多人提到向Fragment传递参数会下意识想到重写Fragment的构造方法并传入自己的参数。事实上,这种方式时极不科学和极不安全的,因为Android在很多场景下都会出现Fragment的重建情况(比如横竖屏的切换),但是重建的时候系统并不会使用你编写的Fragment的构造方法而是调用Fragment默认的构造方法,这个时候你传的参数将会消失导致各种异常。那么如何更安全地向Fragment传递参数呢,这里建议大家使用Google官方推荐的setArguments方法:

 

使用

 

初始化Fragment实例并setArguments

DiscoverFragment discoverFragment = new DiscoverFragment();
Bundle bundle = new Bundle();
bundle.putString("email", email);
discoverFragment.setArguments(bundle);

 

在Fragment中拿到Arguments:

@Nullable
  @Override
  public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
      View view = inflater.inflate(R.layout.fragment_discover, null);
      Bundle bundle = getArguments();
      //这里就拿到了之前传递的参数
      email = bundle.getString("email");


      return view;
  }

 

 

作者:ai-exception

来源:CSDN

 

分类
收藏
回复
举报
回复
    相关推荐