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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/champwang/article/details/81356768

重载 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.

猜你喜欢

转载自blog.csdn.net/champwang/article/details/81356768