2016-11-22 117 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都不提供任何這些直接或間接的方式,因此您的佈局可能會被視爲錯誤。

相關問題