【问题标题】:inflate a view without XML in Android在 Android 中膨胀没有 XML 的视图
【发布时间】:2014-12-15 22:47:48
【问题描述】:

首先,请任何人告诉我是否可以在没有 XML 的情况下扩展视图?

说明是这样的:
我已经通过编码动态生成了一个视图层次结构,比如

相对布局包含 4 个线性布局 -1st 线性布局包含图像视图 -2nd 线性布局包含表面视图 -3rd 线性布局包含按钮 -4 线性布局包含文本框

生成所有视图/视图层次结构没有问题(我通过调试和检查子视图进行了测试)

但我无法将其设置为 setContent()
因为我没有 XML 并且不允许使用 XML(不知道为什么),即我无法访问 R.Layout. 所以我不能使用 inflater.Inflate(R.Layout... )

当我将主要相对布局设置为内容时,出现以下错误

12-16 11:32:03.653: E/AndroidRuntime(22564): java.lang.RuntimeException: Unable to start activity ComponentInfo{my.package.class}: android.content.res.Resources$NotFoundException: Resource ID #0x1d97b

有人知道吗?

----更新日志----
12-16 12:33:16.143: E/AndroidRuntime(25358): FATAL EXCEPTION: main 12-16 12:33:16.143: E/AndroidRuntime(25358): java.lang.RuntimeException: Unable to start activity ComponentInfo{my.package.class}: android.content.res.Resources$NotFoundException: Resource ID #0x1d97b 12-16 12:33:16.143: E/AndroidRuntime(25358): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2343) 12-16 12:33:16.143: E/AndroidRuntime(25358): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2395) 12-16 12:33:16.143: E/AndroidRuntime(25358): at android.app.ActivityThread.access$600(ActivityThread.java:162) 12-16 12:33:16.143: E/AndroidRuntime(25358): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364) 12-16 12:33:16.143: E/AndroidRuntime(25358): at android.os.Handler.dispatchMessage(Handler.java:107) 12-16 12:33:16.143: E/AndroidRuntime(25358): at android.os.Looper.loop(Looper.java:194) 12-16 12:33:16.143: E/AndroidRuntime(25358): at android.app.ActivityThread.main(ActivityThread.java:5371) 12-16 12:33:16.143: E/AndroidRuntime(25358): at java.lang.reflect.Method.invokeNative(Native Method) 12-16 12:33:16.143: E/AndroidRuntime(25358): at java.lang.reflect.Method.invoke(Method.java:525) 12-16 12:33:16.143: E/AndroidRuntime(25358): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833) 12-16 12:33:16.143: E/AndroidRuntime(25358): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 12-16 12:33:16.143: E/AndroidRuntime(25358): at dalvik.system.NativeStart.main(Native Method) 12-16 12:33:16.143: E/AndroidRuntime(25358): Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x1d97b
希望它可以帮助您了解更多

---生成视图的我的活动类的 Dropbox 链接---
https://www.dropbox.com/s/vclymo0cs0zp360/ScannerActivity.java?dl=0

【问题讨论】:

  • 几个问题:1. 为什么你不能在 xml 中定义你的视图 2. 你能发布你的代码来说明你是如何创建和设置这些视图的吗?
  • “我收到以下错误”——如果您需要这方面的帮助,您需要编辑您的问题以包含完整的堆栈跟踪和创建布局所涉及的代码。否则,我们无法为您提供帮助。
  • @CommonsWare 感谢您的回复,我用完整的 logcat 更新了我的原始问题,并附上了源文件..仅供参考,我的活动正在扩展来自 3rd 方 jar 库的 CaptureActivity它正在从抽象方法中设置该布局..
  • 无论是什么CaptureActivity,您都必须得到作者的支持。

标签: android xml android-inflate android-runtime


【解决方案1】:

是否可以在没有 XML 的情况下扩展视图?

没有。 Android 中术语“膨胀”的定义是将 XML 资源文件转换为对应的 Java 对象树。布局膨胀将 XML 布局资源转换为对应的 View 对象树。

但我无法将其设置为 setContent()

我不知道你指的是什么setContent() 方法。把View作为Activity的主要内容,use setContentView()

【讨论】:

  • aah 那只是拼写错误,我的意思是 setContentView()
【解决方案2】:

您的 xml 布局有问题,这就是您无法访问 R.layout 的原因,请执行 Build-->clean 并查看您的 xml 布局中是否有任何错误或在此处发布您的 xml。

【讨论】:

  • OP 正在专门寻找“无 XML”的膨胀,因此 xml 不会有问题,因为它不存在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-05
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多