“RuntimeException:无法实例化活动ComponentInfo”

时间:2016-02-04 06:47:16

标签: java android xml

我要创建一个情人节的应用程序,所以我有一个第一个活动(MainActivity),它有一个激活第二个Activity的按钮(MainActivity 2)问题是它说的实例化问题

它在清单文件中说明

com.example.rajafarid.valentines.MainActivity 2'没有默认构造函数。 验证Android XML文件中的资源引用。

清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.rajafarid.valentines">

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".MainActivity2">
        <intent-filter>
            <action android:name="com.example.rajafarid.valentines.MainActivity2" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
    <activity android:name=".DetailActivity">

        <intent-filter>
            <action android:name="com.example.rajafarid.valentines.DetailActivity" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
</application>

main.java

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.media.Image;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity2 extends ArrayAdapter<ImageITem> {

private Context context;
private int layoutResourceId;
private ArrayList<ImageITem> data = new ArrayList<ImageITem>();

public MainActivity2(Context context, int layoutResourceId, ArrayList<ImageITem> data) {
    super(context, layoutResourceId, data);
    this.layoutResourceId = layoutResourceId;
    this.context = context;
    this.data = data;
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;
    ViewHolder holder;

    if (row == null) {
        LayoutInflater inflater = ((Activity) context).getLayoutInflater();
        row = inflater.inflate(layoutResourceId, parent, false);
        holder = new ViewHolder();
        holder.imageTitle = (TextView) row.findViewById(R.id.text);
        holder.image = (ImageView) row.findViewById(R.id.image);
        row.setTag(holder);
    } else {
        holder = (ViewHolder) row.getTag();
    }


    ImageITem item = data.get(position);
    holder.imageTitle.setText(item.getTitle());
    holder.image.setImageBitmap(item.getImage());
    return row;
}

static class ViewHolder {
    TextView imageTitle;
    ImageView image;
}
}

LogCat查看

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.rajafarid.valentines/com.example.rajafarid.valentines.MainActivity2}: java.lang.InstantiationException: class com.example.rajafarid.valentines.MainActivity2 has no zero argument constructor
                                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2515)
                                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2723)
                                                                                at android.app.ActivityThread.access$900(ActivityThread.java:172)
                                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1422)
                                                                                at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                at android.os.Looper.loop(Looper.java:145)
                                                                                at android.app.ActivityThread.main(ActivityThread.java:5832)
                                                                                at java.lang.reflect.Method.invoke(Native Method)
                                                                                at java.lang.reflect.Method.invoke(Method.java:372)
                                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
                                                                             Caused by: java.lang.InstantiationException: class com.example.rajafarid.valentines.MainActivity2 has no zero argument constructor
                                                                                at java.lang.Class.newInstance(Class.java:1641)
                                                                                at android.app.Instrumentation.newActivity(Instrumentation.java:1079)
                                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2505)
                                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2723) 
                                                                                at android.app.ActivityThread.access$900(ActivityThread.java:172) 
                                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1422) 
                                                                                at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                at android.os.Looper.loop(Looper.java:145) 
                                                                                at android.app.ActivityThread.main(ActivityThread.java:5832) 
                                                                                at java.lang.reflect.Method.invoke(Native Method) 
                                                                                at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 
                                                                             Caused by: java.lang.NoSuchMethodException: <init> []
                                                                                at java.lang.Class.getConstructor(Class.java:531)
                                                                                at java.lang.Class.getDeclaredConstructor(Class.java:510)
                                                                                at java.lang.Class.newInstance(Class.java:1639)
                                                                                at android.app.Instrumentation.newActivity(Instrumentation.java:1079) 
                                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2505) 
                                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2723) 
                                                                                at android.app.ActivityThread.access$900(ActivityThread.java:172) 
                                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1422) 
                                                                                at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                at android.os.Looper.loop(Looper.java:145) 
                                                                                at android.app.ActivityThread.main(ActivityThread.java:5832) 
                                                                                at java.lang.reflect.Method.invoke(Native Method) 
                                                                                at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 

1 个答案:

答案 0 :(得分:0)

您的MainActivity2应该从Activity

扩展
e.g. public class MainActivity2 extends Activity

通过查看代码,您似乎想要创建列表。如果是,请通过实现自定义适配器在同一活动中执行此操作。