2015-11-17 63 views
2

答:我想用AlertDialogBox匿名类,如下创建弹出窗口:InstantiationException问题与匿名类

private void showPopupChangeCurrency(final CharSequence[] items, final String title){ 
    ... 
     myAlert = new AlertDialogBox() { //This is anonymous class 

     @Override 
     protected void setButtonRight() { 
     ... 
     } 
    ... 
} 

B.问题:当改变方向或语言,我下面有InstantiationException FC问题:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.loudlex/com.loudlex.setting.CloudSettings}: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.loudlex.setting.CloudSettings$5: make sure class name exists, is public, and has an empty constructor that is public 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3195) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3291) 
    at android.app.ActivityThread.-wrap16(ActivityThread.java) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1743) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:158) 
    at android.app.ActivityThread.main(ActivityThread.java:7010) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:731) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:621) 
Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.loudlex.setting.CloudSettings$5: make sure class name exists, is public, and has an empty constructor that is public 
    at android.app.Fragment.instantiate(Fragment.java:642) 
    at android.app.FragmentState.instantiate(Fragment.java:114) 
    at android.app.FragmentManagerImpl.restoreAllState(FragmentManager.java:1873) 
    at android.app.FragmentController.restoreAllState(FragmentController.java:122) 
    at android.app.Activity.onCreate(Activity.java:1010) 
    at com.loudlex.utility.ConfWindow.onCreate(ConfWindow.java:60) 
    at com.loudlex.setting.CloudSettings.onCreate(CloudSettings.java:105) 
    at android.app.Activity.performCreate(Activity.java:6786) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1135) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3148) 

C.问: 我想知道是否有任何解决方案可以很好地与匿名类一起工作。

注意。我知道有一些方法可以解决这个问题,例如:通过使用公共静态嵌套类或独立于顶级类。 感谢

+1

“确保类名存在,是公共的,和有一个**空的构造函数public **“。你的自定义类有一个空的构造函数吗? – Sufian

+0

我认为答案是NO,因为CloudSettings $ 5是一个匿名类,所以它没有显式声明构造函数,我认为编译器也不会自动为Anonymous类添加空构造函数。 – NguyenDat

+1

我认为你应该分享代码。我们现在就像做猜测工作。 :) – Sufian

回答