在Android中不使用XML来扩展视图

时间:2014-12-15 22:47:49

标签: android xml android-inflate android-runtime

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

描述如下:
我通过编码动态生成了一个视图层次结构,比如

Relative layout contain 4 Linear layouts
-1st Linear Layout contain Image View
-2nd Linear Layout contain surface view
-3rd Linear Layout contain Button
-4th Linear Layout contain Text Box

并且在生成所有视图/视图层次结构时没有问题(我通过调试和检查子视图来测试)

但我无法将其设置为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

2 个答案:

答案 0 :(得分:5)

  

是否可以在没有XML的情况下给视图充气?

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

  

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

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

答案 1 :(得分:-1)

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