码迷,mamicode.com
首页 > 其他好文 > 详细

采用Fragment.setArguments(Bundle bundle)来传递参数,而不用构造函数

时间:2015-03-07 06:26:02      阅读:1931      评论:0      收藏:0      [点我收藏+]

标签:google   null   public   

google官方推荐用setArgument来传参而不是用构造函数。

    因为当切换横竖屏时,Fragment会调用自己的无参构造函数,那么在构造函数传参就会失效。


public class FramentTestActivity extends ActionBarActivity {

  

  @Override

  protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);


    //切换横竖屏后savedInstanceState就不为null,所以只有第一次进来时才会调用,如果不判断的话,切换横竖屏时又会在原fragment基础上又new 一个Fragment,这样就有2个fragment重叠了。

    if (savedInstanceState == null) {

      getSupportFragmentManager().beginTransaction()

          .add(R.id.container, new TestFragment("param")).commit();

    }

    

  }


  public static class TestFragment extends Fragment {


    private String mArg = "non-param";

    

    public TestFragment() {

      Log.i("INFO", "TestFragment non-parameter constructor");

    }

    

    public TestFragment(String arg){

      mArg = arg;

      Log.i("INFO", "TestFragment construct with parameter");

    }


    @Override

    public View onCreateView(LayoutInflater inflater, ViewGroup container,

        Bundle savedInstanceState) {

      View rootView = inflater.inflate(R.layout.fragment_main, container,

          false);

      TextView tv = (TextView) rootView.findViewById(R.id.tv);

      tv.setText(mArg);

      return rootView;

    }

  }


}

采用Fragment.setArguments(Bundle bundle)来传递参数,而不用构造函数

标签:google   null   public   

原文地址:http://6169621.blog.51cto.com/6159621/1618038

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!