Android:无法实例化类:没有空构造函数

时间:2014-01-10 16:59:26

标签: java android class constructor expandablelistview

请看下面,我得到一个无法实例化的类:在尝试运行我的“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 Manifest ....

<?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>

1 个答案:

答案 0 :(得分:1)

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

我将HomeFragmentListExpand移动到它自己的类中,并改变了清单和所有好处。

谢谢你们/女孩们。