[Android][App]重载构造方法报错(Avoid non-default constructors in fragments)

重载 Fragment的构造方法会报以下错误。

Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(Bundle) instead less... (Ctrl+F1)
From the Fragment documentation: Every fragment must have an empty constructor, so it can be instantiated when restoring its activity's state. It is strongly recommended that subclasses do not have other constructors with parameters, since these constructors will not be called when the fragment is re-instantiated; instead, arguments can be supplied by the caller with setArguments(Bundle) and later retrieved by the Fragment with getArguments().  More info: http://developer.android.com/reference/android/app/Fragment.html#Fragment()

 

解决方法参考如下:

/**
 * Returns a new instance of this fragment for the given section
 * number.
 */
public static PlaceholderFragment newInstance(int sectionNumber) {
	PlaceholderFragment fragment = new PlaceholderFragment();
	Bundle args = new Bundle();
	args.putInt(ARG_SECTION_NUMBER, sectionNumber);
	fragment.setArguments(args);
	return fragment;
}

创建一个 newInstance 方法来避免使用构造来传参数。

在onCreatView中使用参数的方法:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
								  Bundle savedInstanceState) {
	View rootView = inflater.inflate(R.layout.fragment_tabbed,
			container, false);
	TextView textView = (TextView) rootView.findViewById(R.id.section_label);
	textView.setText(getString(R.string.section_format,
			getArguments().getInt(ARG_SECTION_NUMBER)));
	return rootView;
}

 

最后调用方法:

PlaceholderFragment.newInstance(position);

 

end.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值