这是给我错误的行:-
"错误:(147, 53( 错误:类训练片段中的构造函数训练片段无法应用于给定类型; 必需:字符串,字符串,整数 找到:无参数 原因:实际参数列表和正式参数列表的长度不同">
这是我在 MainActivity 中创建列表时出错的代码部分.java:-
private Fragment getHomeFragment() {
switch (navItemIndex) {
case 0:
HomeFragment homeFragment = new HomeFragment();
return homeFragment;
case 1:
GalleryFragment galleryFragment = new GalleryFragment();
return galleryFragment;
case 2:
TrainingFragment trainingFragment = new TrainingFragment();
return trainingFragment;
case 3:
NutritionFragment nutritionFragment = new NutritionFragment();
return nutritionFragment;
case 4:
ContactFragment contactFragment = new ContactFragment();
return contactFragment;
default:
return new HomeFragment();
}
}
训练片段.java
public class TrainingFragment extends Fragment {
String name;
String detail;
int image;
public TrainingFragment(String name, String detail, int image) {
this.name = name;
this.detail = detail;
this.image = image;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDetail() {
return detail;
}
public void setDetail(String detail) {
this.detail = detail;
}
public int getImage() {
return image;
}
public void setImage(int image) {
this.image = image;
}
}
培训适配器.java
public class TrainingAdapter extends ArrayAdapter<TrainingFragment> {
Context context;
List<TrainingFragment> TrainingFragmentList;
TrainingFragment TrainingFragment;
public TrainingAdapter(@NonNull Context context, @LayoutRes int resource, @NonNull List<TrainingFragment> TrainingFragmentObject) {
super(context, resource, TrainingFragmentObject);
this.context = context;
this.TrainingFragmentList = TrainingFragmentObject;
}
@Override
public View getView(final int position, @Nullable View view, @NonNull ViewGroup parent) {
view = LayoutInflater.from(context).inflate(R.layout.training_list,null);
TextView name;
ImageView image;
name = (TextView)view.findViewById(R.id.name);
image = (ImageView)view.findViewById(R.id.image);
//looping TrainingFragment list
TrainingFragment = TrainingFragmentList.get(position);
name.setText(TrainingFragment.getName());
image.setImageResource(TrainingFragment.getImage());
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(context, ActivityDetail.class);
intent.putExtra("name", TrainingFragmentList.get(position).getName());
intent.putExtra("detail", TrainingFragmentList.get(position).getDetail());
intent.putExtra("image", TrainingFragmentList.get(position).getImage());
context.startActivity(intent);
}
});
return view;
}
}
您的代码缺少一个无参数构造函数,您必须将名称、详细信息和图像数量传递给 TrainingFragment
。
case 2:
TrainingFragment trainingFragment = new TrainingFragment();
应该是
case 2:
TrainingFragment trainingFragment = new TrainingFragment("name", "detail", 1);
作为替代方法,将无参数构造函数添加到类TrainingFragment
。