android - 在 Xml 中声明的 Fragment 中的 Fragment
问题描述
根据对现有问题的回答,在 android 中使用片段内部的片段曾经存在问题,但现在应该有一种方法让 Android 能够处理它们。
虽然现有问题涉及在 Java 中创建片段,但我想通过以下方式直接在 Xml 中创建它们:
<fragment
android:layout_width="100dp"
android:layout_height="100dp"
class="com.ra.ra_e_akte.fragments.MyFragment"
android:id="@+id/myFragment"
/>
不幸的是,我得到了错误:
2019-07-29 15:37:06.586 16529-16529/com.ra.ra_e_akte E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.ra.ra_e_akte, PID: 16529
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ra.ra_e_akte/com.ra.ra_e_akte.activities.DefaultStacksActivity}: android.view.InflateException: Binary XML file line #11: Binary XML file line #66: Binary XML file line #66: Error inflating class fragment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2962)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3037)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1701)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6949)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Caused by: android.view.InflateException: Binary XML file line #11: Binary XML file line #66: Binary XML file line #66: Error inflating class fragment
Caused by: android.view.InflateException: Binary XML file line #66: Binary XML file line #66: Error inflating class fragment
Caused by: android.view.InflateException: Binary XML file line #66: Error inflating class fragment
Caused by: androidx.fragment.app.Fragment$InstantiationException: Unable to instantiate fragment com.ra.ra_e_akte.fragments.SyncButton: calling Fragment constructor caused an exception
at androidx.fragment.app.Fragment.instantiate(Fragment.java:532)
onCreate 在父片段中:
override fun onCreateView(inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.header_fragment, container, false)
return view
}
是否有一种有效的方式来在其他片段的 xml 中声明片段?
解决方案
<fragment android:name="com.ra.ra_e_akte.fragments.MyFragment"
android:layout_width="100dp"
android:layout_height="100dp"
android:id="@+id/myFragment"
/>
试试这个代码
推荐阅读
- ios - 启动本地服务器 iOS 并将其加载到 WKWebView
- android - .findViewById() 返回 null
- numpy - Numpy、OOP 和可调用对象
- azure-active-directory - 在创建帐户之前使用 ADB2C 电话因素技术配置文件来验证电话号码
- regex - awk 正则表达式 (REGEX) 从文件中获取电话号码
- python - 如何在只有几列的行中替换值而不在 Pandas 中合并
- r - 如何使用 readtext 将多个 JSON 文件加载到 quanteda 语料库中?
- regex - 匹配包含括号的 RegEx 文本字符串
- javascript - 如何在纯 JavaScript 中选择嵌套元素?
- javascript - 如何在 html 中制作像 mx player 这样的视频播放器?