DialogFragment在方向更改时使应用程序崩溃

克里斯托弗

我有一个问题,AlertFragment当您首次运行该应用程序时它显示得很好,但是当您旋转设备(方向更改)时,该应用程序崩溃了。

时间表:MainActivity-> ScheduledRecListFragment->AlertFragment

MainActivity(简化的摘录):

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);   // < -- line 28
    setContentView(R.layout.activity_main);

    fragmentManager = getFragmentManager();
    fragmentTransaction = fragmentManager.beginTransaction();
    ScheduledRecListFragment fragment = new ScheduledRecListFragment();

    if(getFragmentManager().findFragmentByTag("RecListFrag") == null) {

        fragmentTransaction.add(R.id.fragment_container, fragment, "RecListFrag");
        fragmentTransaction.commit();
    }

}

ScheduledRecListFragment(简化的摘录):

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

    View v = inflater.inflate(R.layout.scheduled_rec_list_fragment, container, false);
    lv = (ListView) v.findViewById(R.id.listViewRecs);

   // ...

    if(db.selectAllRecords().getCount() == 0  )   {

        new AlertFragment(getString(R.string.alert), getString(R.string.no_recs)).show(getFragmentManager(), "MyDialog");
    }

   // ...

    return v;

}

AlertFragment:

class AlertFragment extends DialogFragment {

String title;
String message;


public AlertFragment(String title, String message)  {

    this.title = title;
    this.message = message;
}


public AlertFragment()  {


}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity());
    alertDialogBuilder.setTitle(title);
    alertDialogBuilder.setMessage(message);
    //null should be your on click listener

    alertDialogBuilder.setNegativeButton("Dismiss", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
    });


    return alertDialogBuilder.create();
}
}

日志猫:

12-30 12:35:27.421  11871-11871/com.app.example E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.app.example/com.app.example.MainActivity}: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.app.example.AlertFragment: make sure class name exists, is public, and has an empty constructor that is public
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2205)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2255)
            at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3727)
            at android.app.ActivityThread.access$700(ActivityThread.java:146)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1246)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5171)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:564)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.app.example.AlertFragment: make sure class name exists, is public, and has an empty constructor that is public
            at android.app.Fragment.instantiate(Fragment.java:600)
            at android.app.FragmentState.instantiate(Fragment.java:97)
            at android.app.FragmentManagerImpl.restoreAllState(FragmentManager.java:1747)
            at android.app.Activity.onCreate(Activity.java:922)
            at com.app.example.MainActivity.onCreate(MainActivity.java:28)
            at android.app.Activity.performCreate(Activity.java:5200)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2169)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2255)
            at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3727)
            at android.app.ActivityThread.access$700(ActivityThread.java:146)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1246)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5171)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:564)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.IllegalAccessException: access to class not allowed
            at java.lang.Class.newInstanceImpl(Native Method)
            at java.lang.Class.newInstance(Class.java:1319)
            at android.app.Fragment.instantiate(Fragment.java:585)
            at android.app.FragmentState.instantiate(Fragment.java:97)
            at android.app.FragmentManagerImpl.restoreAllState(FragmentManager.java:1747)
            at android.app.Activity.onCreate(Activity.java:922)
            at com.app.example.MainActivity.onCreate(MainActivity.java:28)
            at android.app.Activity.performCreate(Activity.java:5200)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2169)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2255)
            at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3727)
            at android.app.ActivityThread.access$700(ActivityThread.java:146)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1246)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5171)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:564)
            at dalvik.system.NativeStart.main(Native Method)
克里斯托弗

好吧,我已经找到了......解决的办法是把setRetainInstance(true)里面DialogonCreateDialog()方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android棉花糖中的屏幕方向更改时的权限对话框使应用程序崩溃

来自分类Dev

当Picker selectedValue更改时,SwiftUI 2.0应用程序崩溃

来自分类Dev

在平板电脑方向更改应用程序崩溃

来自分类Dev

DialogFragment在方向更改时被驳回

来自分类Dev

DialogFragment在方向更改时被驳回

来自分类Dev

选择器值更改时,SwiftUI 2.0应用程序崩溃

来自分类Dev

React Native 应用程序在状态更改时变得无响应/崩溃

来自分类Dev

在 Realm 数据库中进行更改时应用程序崩溃

来自分类Dev

方向更改时,Phonegap Android应用程序每次都会重置到主屏幕

来自分类Dev

PreferenceActivity在方向更改时崩溃

来自分类Dev

Android处理方向的更改。使用滑行更改图像时应用程序崩溃点

来自分类Dev

ADColony视频广告由于方向更改而使应用程序崩溃

来自分类Dev

在ScrollView中定义位置后更改设备方向时,Swift / SwitUI应用程序崩溃

来自分类Dev

应用程序因更改ImageView而崩溃

来自分类Dev

当应用程序变量更改时触发Firestore查询

来自分类Dev

主节点更改时,应用程序无法连接mongodb

来自分类Dev

子组件更改时刷新应用程序状态

来自分类Dev

Kivy应用程序在屏幕更改时退出

来自分类Dev

如何在包名称更改时停止应用程序?

来自分类Dev

路径应用程序更改时如何停止滚动事件?

来自分类Dev

包含iOS应用程序的数据更改时更新WatchKit应用程序

来自分类Dev

方向更改时,您是否必须手动旋转应用程序?还是默认情况下,Expo会处理它?

来自分类Dev

更改领域对象会使应用程序崩溃

来自分类Dev

在样式下更改主题时,应用程序崩溃

来自分类Dev

MvxNotifyProperty更改了SetProperty上的应用程序崩溃

来自分类Dev

android wifi状态更改导致应用程序崩溃

来自分类Dev

MvxNotifyProperty更改了SetProperty上的应用程序崩溃

来自分类Dev

为什么我的应用程序在更改布局时崩溃?

来自分类Dev

应用程序崩溃而未进行任何更改

Related 相关文章

  1. 1

    Android棉花糖中的屏幕方向更改时的权限对话框使应用程序崩溃

  2. 2

    当Picker selectedValue更改时,SwiftUI 2.0应用程序崩溃

  3. 3

    在平板电脑方向更改应用程序崩溃

  4. 4

    DialogFragment在方向更改时被驳回

  5. 5

    DialogFragment在方向更改时被驳回

  6. 6

    选择器值更改时,SwiftUI 2.0应用程序崩溃

  7. 7

    React Native 应用程序在状态更改时变得无响应/崩溃

  8. 8

    在 Realm 数据库中进行更改时应用程序崩溃

  9. 9

    方向更改时,Phonegap Android应用程序每次都会重置到主屏幕

  10. 10

    PreferenceActivity在方向更改时崩溃

  11. 11

    Android处理方向的更改。使用滑行更改图像时应用程序崩溃点

  12. 12

    ADColony视频广告由于方向更改而使应用程序崩溃

  13. 13

    在ScrollView中定义位置后更改设备方向时,Swift / SwitUI应用程序崩溃

  14. 14

    应用程序因更改ImageView而崩溃

  15. 15

    当应用程序变量更改时触发Firestore查询

  16. 16

    主节点更改时,应用程序无法连接mongodb

  17. 17

    子组件更改时刷新应用程序状态

  18. 18

    Kivy应用程序在屏幕更改时退出

  19. 19

    如何在包名称更改时停止应用程序?

  20. 20

    路径应用程序更改时如何停止滚动事件?

  21. 21

    包含iOS应用程序的数据更改时更新WatchKit应用程序

  22. 22

    方向更改时,您是否必须手动旋转应用程序?还是默认情况下,Expo会处理它?

  23. 23

    更改领域对象会使应用程序崩溃

  24. 24

    在样式下更改主题时,应用程序崩溃

  25. 25

    MvxNotifyProperty更改了SetProperty上的应用程序崩溃

  26. 26

    android wifi状态更改导致应用程序崩溃

  27. 27

    MvxNotifyProperty更改了SetProperty上的应用程序崩溃

  28. 28

    为什么我的应用程序在更改布局时崩溃?

  29. 29

    应用程序崩溃而未进行任何更改

热门标签

归档