错误:此类应在Android

时间:2016-06-14 20:13:03

标签: android constructor baseadapter

我在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;
    }
}

有什么问题?

由于

3 个答案:

答案 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() {