在Android中,编译器无法直接确定SuperHeroInfo.names应该放在哪里,因为它没有onCreateView方法。然而,我们可以通过以下两种方式解决这个问题:
public class SuperHeroFragment extends Fragment {
public static SuperHeroFragment newInstance(String[] names) {
SuperHeroFragment fragment = new SuperHeroFragment();
Bundle args = new Bundle();
args.putStringArray("names", names);
fragment.setArguments(args);
return fragment;
}
// onCreateView等其他方法
}
然后,在Activity中使用newInstance()方法来创建Fragment实例,并将SuperHeroInfo.names数据传递给Fragment。示例如下:
String[] names = SuperHeroInfo.names;
SuperHeroFragment fragment = SuperHeroFragment.newInstance(names);
在Fragment的onCreateView方法中,我们可以通过getArguments()方法获取传递过来的数据。示例如下:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_superhero, container, false);
String[] names = getArguments().getStringArray("names");
// 使用names数据进行相关操作
return rootView;
}
public class SuperHeroFragment extends Fragment {
private String[] names;
public SuperHeroFragment(String[] names) {
this.names = names;
}
// onCreateView等其他方法
}
然后,在Activity中创建Fragment实例时,传递SuperHeroInfo.names数据给构造函数。示例如下:
String[] names = SuperHeroInfo.names;
SuperHeroFragment fragment = new SuperHeroFragment(names);
在Fragment的onCreateView方法中,我们可以直接使用构造函数中传递过来的names数据。示例如下:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_superhero, container, false);
// 使用names数据进行相关操作
return rootView;
}
这两种方法都可以让SuperHeroFragment类获取到SuperHeroInfo.names数据,并在onCreateView方法中进行相关操作。具体选择哪种方法取决于你的需求和偏好。