【问题标题】:Android: can't instantiate class : no empty constructorAndroid:无法实例化类:没有空的构造函数
【发布时间】:2014-01-10 16:59:25
【问题描述】:

请看下面,我得到一个无法实例化类:当我尝试运行我的“HomeFragmentListExpand”类时,LogCat 中没有空构造函数错误,即使我在那里显然有一个空构造函数。

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import android.app.Activity;
import android.content.Intent;
import android.util.SparseArray;
import android.widget.ExpandableListView;

public class HomeFragment extends Fragment {
public HomeFragment(){}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_home, container, false);

    Intent intent = new Intent(getActivity(), HomeFragmentListExpand.class);
    startActivity(intent);

    return rootView;

}

public class HomeFragmentListExpand extends Activity {

    public HomeFragmentListExpand(){
        super();
    }


    // more efficient than HashMap for mapping integers to objects
    SparseArray<Group> groups = new SparseArray<Group>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_home);
        createData();
        ExpandableListView listView = (ExpandableListView) findViewById(R.id.listView);
        MyExpandableListAdapter adapter = new MyExpandableListAdapter(this,
                groups);
        listView.setAdapter(adapter);
        }
    public void createData() {
        for (int j = 0; j < 5; j++) {
            Group group = new Group("Test " + j);
            for (int i = 0; i < 5; i++) {
                group.children.add("Sub Item" + i);
                }
            groups.append(j, group);
        }
        }
    }

}

LogCat…………

01-10 16:41:45.143: E/AndroidRuntime(24809): FATAL EXCEPTION: main
01-10 16:41:45.143: E/AndroidRuntime(24809): java.lang.RuntimeException: Unable to instantiate activity  ComponentInfo{com.smarte.smarteproducts/com.smarte.smarteproducts.HomeFragment$HomeFragmentListExpand}: java.lang.InstantiationException: can't instantiate class com.smarte.smarteproducts.HomeFragment$HomeFragmentListExpand; no empty constructor
01-10 16:41:45.143: E/AndroidRuntime(24809):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2435)
01-10 16:41:45.143: E/AndroidRuntime(24809):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2574)
01-10 16:41:45.143: E/AndroidRuntime(24809):    at android.app.ActivityThread.access$600(ActivityThread.java:162)
01-10 16:41:45.143: E/AndroidRuntime(24809):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1413)
01-10 16:41:45.143: E/AndroidRuntime(24809):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-10 16:41:45.143: E/AndroidRuntime(24809):    at android.os.Looper.loop(Looper.java:158)
01-10 16:41:45.143: E/AndroidRuntime(24809):    at android.app.ActivityThread.main(ActivityThread.java:5789)
01-10 16:41:45.143: E/AndroidRuntime(24809):    at java.lang.reflect.Method.invokeNative(Native Method)
01-10 16:41:45.143: E/AndroidRuntime(24809):    at java.lang.reflect.Method.invoke(Method.java:525)
01-10 16:41:45.143: E/AndroidRuntime(24809):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
01-10 16:41:45.143: E/AndroidRuntime(24809):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:843)
01-10 16:41:45.143: E/AndroidRuntime(24809):    at dalvik.system.NativeStart.main(Native Method)
01-10 16:41:45.143: E/AndroidRuntime(24809): Caused by: java.lang.InstantiationException: can't instantiate class com.smarte.smarteproducts.HomeFragment$HomeFragmentListExpand; no empty constructor
01-10 16:41:45.143: E/AndroidRuntime(24809):    at java.lang.Class.newInstanceImpl(Native Method)
01-10 16:41:45.143: E/AndroidRuntime(24809):    at java.lang.Class.newInstance(Class.java:1130)
01-10 16:41:45.143: E/AndroidRuntime(24809):    at android.app.Instrumentation.newActivity(Instrumentation.java:1079)
01-10 16:41:45.143: E/AndroidRuntime(24809):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2426)
01-10 16:41:45.143: E/AndroidRuntime(24809):    ... 11 more
01-10 16:46:46.023: D/Process(24809): killProcess, pid=24809
01-10 16:46:46.023: D/Process(24809): com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException:123 java.lang.ThreadGroup.uncaughtException:693 java.lang.ThreadGroup.uncaughtException:690 

Android 清单....

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.smarte.smarteproducts"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="14"
    android:targetSdkVersion="19" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/Theme.Smartestyle" >
    <activity
        android:name="com.smarte.smarteproducts.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name="com.smarte.smarteproducts.HomeFragment$HomeFragmentListExpand" />
</application>

【问题讨论】:

  • 你称它为 Fragment 但它扩展了 Activity?
  • 你有一个activity类作为fragment的内部类吗?发布您的清单。我猜你很困惑
  • 是的,因为我不能把activity类的内容放到fragment类中。
  • @ChrisJamesHancocks 没有理由创建活动类的构造函数。其次,我猜你对碎片和活动的工作方式感到困惑。发布您的清单文件
  • 我已添加 Manifest。我想我有点困惑。有一段时间了-_-

标签: java android class constructor expandablelistview


【解决方案1】:

这是漫长的一天,我只是愚蠢。 感谢@Raghunandan 向我指出这一点。

我将 HomeFragmentListExpand 移到它自己的类中并更改了清单,一切都很好。

谢谢男孩/女孩。

【讨论】:

  • 您还应该删除活动的构造函数
  • 我遇到了同样的问题,虽然我的应用程序运行良好,但突然开始出现此错误,知道为什么会这样
猜你喜欢
  • 2013-09-27
  • 1970-01-01
  • 2013-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-18
  • 1970-01-01
相关资源
最近更新 更多