2016-11-22 119 views
-3

我有一个Android应用程序,其编译在AndroidStudio,但是当我打电话一定的活动我得到以下错误:如何解决运行时错误“您必须提供layout_width属性。”在android中?

11-22 16:08:40.461 13796-13796/com.impyiablue.stoxx E/AndroidRuntime: FATAL EXCEPTION: main 
                     Process: com.impyiablue.stoxx, PID: 13796 
                     java.lang.RuntimeException: Unable to start activity ComponentInfo{com.impyiablue.stoxx/com.impyiablue.stoxx.EditEntryActivity}: java.lang.RuntimeException: Binary XML file line #25: You must supply a layout_width attribute. 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2305) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2365) 
at android.app.ActivityThread.access$800(ActivityThread.java:148) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:135) 
at android.app.ActivityThread.main(ActivityThread.java:5272) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704) 
Caused by: java.lang.RuntimeException: Binary XML file line #25: You must supply a layout_width attribute. 
at android.content.res.TypedArray.getLayoutDimension(TypedArray.java:606) 
at android.view.ViewGroup$LayoutParams.setBaseAttributes(ViewGroup.java:6422) 
at android.view.ViewGroup$MarginLayoutParams.<init>(ViewGroup.java:6591) 
at android.widget.LinearLayout$LayoutParams.<init>(LinearLayout.java:1866) 
at android.widget.LinearLayout.generateLayoutParams(LinearLayout.java:1778) 
at android.widget.LinearLayout.generateLayoutParams(LinearLayout.java:62) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:808) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:809) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
at com.impyiablue.stoxx.EditEntryActivity.onCreate(EditEntryActivity.java:51) 
at android.app.Activity.performCreate(Activity.java:5977) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2258) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2365)  
at android.app.ActivityThread.access$800(ActivityThread.java:148)  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283)  
at android.os.Handler.dispatchMessage(Handler.java:102)  
at android.os.Looper.loop(Looper.java:135)  
at android.app.ActivityThread.main(ActivityThread.java:5272)  
at java.lang.reflect.Method.invoke(Native Method)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704)  
11-22 16:10:02.231 15805-15805/com.impyiablue.stoxx:remote E/AndroidRuntime: FATAL EXCEPTION: main 
                      Process: com.impyiablue.stoxx:remote, PID: 15805 
                      java.lang.NumberFormatException: Invalid float: "N/A" 
                       at java.lang.StringToReal.invalidReal(StringToReal.java:63) 
                       at java.lang.StringToReal.initialParse(StringToReal.java:164) 
                       at java.lang.StringToReal.parseFloat(StringToReal.java:323) 
                       at java.lang.Float.parseFloat(Float.java:306) 
                       at com.impyiablue.stoxx.Tools.ServiceStock$ResponseListener.onResponse(ServiceStock.java:86) 
                       at com.impyiablue.stoxx.Tools.ServiceStock$ResponseListener.onResponse(ServiceStock.java:71) 
                       at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:67) 
                       at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:30) 
                       at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99) 
                       at android.os.Handler.handleCallback(Handler.java:739) 
                       at android.os.Handler.dispatchMessage(Handler.java:95) 
                       at android.os.Looper.loop(Looper.java:135) 
                       at android.app.ActivityThread.main(ActivityThread.java:5272) 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at java.lang.reflect.Method.invoke(Method.java:372) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704) 

相应的XML文件可以发现here。我没有看到这个XML文件的任何问题。那么如何解决这个问题呢?我也做了最新版本之前干净...

+0

我觉得android:layout_weight必须是int吗? –

+3

您的第一个TextView没有定义任何大小。我非常肯定Android Studio指出了这一点。 –

+0

将'layout_height'和'layout_width'属性添加到XML中的所有小部件。 – AlphaQ

回答

3

看看你的XML布局的第25行中,TextViewtextTitleEdit ID缺少layout_widthlayout_height属性,这是必需的。下一个TextView也缺少相同的属性。

+0

但它的工作之前... – Alex

+0

现在我的布局看起来loks废话.... – Alex

+0

@Alex在什么时候?你改变了什么?我知道'GridLayout'中的视图不需要这些属性,但它们在'LinearLayout'中是必需的。 – Bryan

3

I have an android app which compiles in AndroidStudio

项目汇编保证其正确性,这也包括布局。在运行时,即使对象为layout_width也是必需的,在编译过程中缺少这样的内容并不是一个bug,但通常是由于忽略/错误导致的。您可能只需要有意地忽略这些属性,并希望稍后在运行时从运行代码中添加它们。没有编译器/静态分析器能够解决这个问题,所以这就是为什么lint会抱怨,但编译阶段不会失败。

为避免出现此类问题,您可以尝试使用lint工具来捕获所有潜在问题,但agaim缺少给定属性不是错误,因此它不会导致任何编译错误。 layout_heightlayout_width在运行时是强制性的,因此ViewGroup知道如何布置所有孩子,并且因为您的大部分TextView都不提供任何这些直接或间接的方式,因此您的布局可能会被视为错误。

相关问题