1 问题

    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.appsinnova.android.keepdrop/com.appsinnova.android.keepdrop.account.favorite.activity.MyLikeActivity}: androidx.fragment.app.Fragment$InstantiationException: Unable to instantiate fragment com.appsinnova.android.keepdrop.fragment.MyLikeFragment: could not find Fragment constructor        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3782)        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3961)        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91)        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103)        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2386)        at android.os.Handler.dispatchMessage(Handler.java:107)        at android.os.Looper.loop(Looper.java:213)        at android.app.ActivityThread.main(ActivityThread.java:8178)        at java.lang.reflect.Method.invoke(Native Method)        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101)     Caused by: androidx.fragment.app.Fragment$InstantiationException: Unable to instantiate fragment com.appsinnova.android.keepdrop.fragment.MyLikeFragment: could not find Fragment constructor        at androidx.fragment.app.Fragment.instantiate(Fragment.java:538)        at androidx.fragment.app.FragmentContainer.instantiate(FragmentContainer.java:57)        at androidx.fragment.app.FragmentManagerImpl$6.instantiate(FragmentManagerImpl.java:2851)        at androidx.fragment.app.FragmentState.instantiate(FragmentState.java:85)        at androidx.fragment.app.FragmentManagerImpl.restoreSaveState(FragmentManagerImpl.java:2488)        at androidx.fragment.app.FragmentController.restoreSaveState(FragmentController.java:195)        at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:288)        at androidx.appcompat.app.AppCompatActivity.onCreate(AppCompatActivity.java:115)        at com.trello.rxlifecycle2.components.support.RxAppCompatActivity.onCreate(RxAppCompatActivity.java:59)        at com.skyunion.android.base.RxBaseActivity.onCreate(RxBaseActivity.java:131)        at com.appsinnova.android.keepdrop.base.BaseActivity.onCreate(BaseActivity.kt:26)        at android.app.Activity.performCreate(Activity.java:8086)        at android.app.Activity.performCreate(Activity.java:8074)        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1313)        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3755)        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3961)         at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91)         at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)         at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103)         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2386)         at android.os.Handler.dispatchMessage(Handler.java:107)         at android.os.Looper.loop(Looper.java:213)         at android.app.ActivityThread.main(ActivityThread.java:8178)         at java.lang.reflect.Method.invoke(Native Method)         at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101) 

 

 

 

 

2 引发原因

我在Activity里面传递参数给Fragment的时候,对Fragment的构造方法去掉了,然后加了一个类型的参数放入构造函数

constructor(type: String) {    this.type =  type}

这样很容易引发奔溃,如上,我们传递参数应该用setArguments方法通过bundle来传递需要的数据

 

 

 

 

 

3 解决办法

activity里面

        var fragment = MyLikeFragment()        val bundle = Bundle()        bundle.putString(EXTRA_INDEX, info)        fragment.arguments = bundle        showFragment(fragment)

fragment的onCreateView里面

 var type = getArguments()?.getString(EXTRA_INDEX)

 

 

 

 

4、 总结

Activity和Fragment里面传递数据尽量用setArguments方法

千万不要用 Fragment的构造函数传递参数,各种坑。

更多相关文章

  1. Android发送短信,并监听短信发送后是否发送成功的实现方法
  2. 找不到R.java 解决方法
  3. Android Toast的几种简单调用方法
  4. Android使用SDK方法详解
  5. Android 发送普通的post请求的方法
  6. Android中View绘制流程以及invalidate()等相关方法分析
  7. Android 获取Gmail邮箱地址方法
  8. ubuntu的android studio调试小米手机的方法
  9. android 布局之滑动探究 scrollTo 和 scrollBy 方法使用说明

随机推荐

  1. Android(安卓)Handler
  2. Android开发笔记之【Android(安卓)API】A
  3. Android内存管理-SoftReference的使用
  4. Android(安卓)数字签名学习笔记
  5. 解决android一直在running,打不开文件,下载
  6. android Dependencies ,Private Libraries
  7. Android尺寸单位
  8. okhttp的应用详解与源码解析--okhttp客户
  9. Android之网络请求10————Retrofit的
  10. 使用Android(安卓)NDK中的独立toolchain