【问题标题】:"RuntimeException: Unable to instantiate activity ComponentInfo"“RuntimeException:无法实例化活动 ComponentInfo”
【发布时间】:2016-02-04 06:47:15
【问题描述】:

我要创建一个情人节应用程序,所以我有一个第一个活动(MainActivity),它有一个激活第二个活动(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) 

【问题讨论】:

  • Stackoverflow 不是调试服务。请向我们展示您是如何尝试解决问题的。
  • #athafoud 我不知道如何展示......因为我是 android 领域的新手......我可以做的是上面提到的如果你能帮助我快乐,否则没关系没问题

标签: java android xml


【解决方案1】:

您的 MainActivity2 应该从 Activity 扩展

e.g. public class MainActivity2 extends Activity

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-19
  • 2011-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多