我在Android Studio中使用Generated Signed APK生成文件apk,但我有这个错误:
错误:错误:此类应提供默认构造函数(不带参数的公共构造函数)(com.actua.actuaconsultores.actuamindfulness.GridImagenAdaptar)[Instantiatable]
我的课程是:
public class GridImagenAdaptar extends BaseAdapter {
private final Context mContext;
private final ArrayList<ModelImage> mGridItems;
public GridImagenAdaptar(Context mContext, ArrayList<ModelImage> mGridItems) {
this.mContext = mContext;
this.mGridItems = mGridItems;
}
public int getCount() {
return mGridItems.size();
}
public Object getItem(int position) {
return mGridItems.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent)
{
if( convertView == null)
{ // If ReusedView doesn't exist
convertView = inflatedViewWithContextInParentView(R.layout.activity_grid_imagen_adaptar, mContext, parent);
convertView.setTag("HomeMenuCell"); // Reuse Identifier
}
fillViewWithItemAtIndex(convertView, position);
return convertView;
}
private View inflatedViewWithContextInParentView(int id, Context context, ViewGroup parentView)
{
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Service.LAYOUT_INFLATER_SERVICE);
View inflatedView = inflater.inflate(id, parentView, false);
return inflatedView;
}
private void fillViewWithItemAtIndex(View reusedView, int index)
{
ModelImage item = mGridItems.get(index);
item.setId(index);
TextView title = (TextView) reusedView.findViewById(R.id.title);
title.setText(item.title);
ImageView picture = (ImageView) reusedView.findViewById(R.id.image);
int resourceID = getIDForResourceName(item.imageName);
picture.setImageResource(resourceID);
}
private int getIDForResourceName(String name)
{
try {
Class res = R.drawable.class;
Field field = res.getField(name);
int drawableId = field.getInt(null);
return drawableId;
}
catch (Exception e) {
Log.e("GridItemsAdapter", "Error: Couldn't get a drawable id.", e);
}
return -1;
}
}
有什么问题?
由于
答案 0 :(得分:1)
此错误意味着您必须添加:
public GridImagenAdaptar(){}
带着你的构造函数到你的班级。
答案 1 :(得分:1)
在AndroidManifest.xml
文件中签出,必须删除或更改该类名称,否则必须意外添加其他类,这样就可以了。例如,在我的情况下,是这样添加ParyllService的,因此我删除了ParyllService以使其正常工作。
<!-- was uncessary <service
android:name=".services.finance.payroll.PayrollService"
android:enabled="true"
android:exported="true"></service>-->
答案 2 :(得分:1)
解决方案也可以是类参数的默认值(而不是删除它们)。 我在Kotlin类中遇到了同样的问题,该问题必须在AndroidManifest.xml中,因为它是Activity类,另外该类还需要参数(用于列表详细信息处理的ID号)。清单中的错误是相同的此类应提供默认构造函数(无参数的公共构造函数),甚至无法运行该应用程序。解决此问题的唯一方法是向构造函数参数添加默认值(并在类中进行一些处理):
class ArticleDetail(id: Long): AppCompatActivity() {...
进入
class ArticleDetail(id: Long = -1): AppCompatActivity() {