2016-04-03 38 views
0

我正在學習創建CardView。我可以在佈局文件的設計選項卡和佈局的文本部分的預覽部分中看到佈局的外觀。由於錯誤而無法啓動基本應用程序(UnsupportedOperationException:無法轉換爲dimension:type = 0x1)

但是,當我在模擬器或Android設備上運行應用程序時,它會拋出一個錯誤消息:「不幸的是,CardActivity已停止工作。」

我不知道我做錯了什麼,請幫助。

這是activity_main.xml文件的內容。

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:card_view="http://schemas.android.com/apk/res-auto" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:padding="10dp"> 

     <!-- A CardView That contains a TextView --> 
     <android.support.v7.widget.CardView 
      xmlns:card_view="http://schemas.android.com/apk/res-auto" 
      android:id="@+id/card_view" 
      android:layout_width="match_parent" 
      card_view:cardUseCompatPadding="true" 
      card_view:cardElevation="4dp" 
      android:layout_height="wrap_content" 
      card_view:cardCornerRadius="5dp" 
      android:background="#dddddd"> 

      <LinearLayout 
       android:layout_width="match_parent" 
       android:orientation="vertical" 
       android:layout_height="match_parent" 
       android:weightSum="1" 
       android:padding="10dp"> 

       <LinearLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:orientation="horizontal" 
        android:background="#4f76d2"> 

        <ImageView 
         android:layout_width="50dp" 
         android:layout_height="50dp" 
         android:scaleType="centerCrop" 
         android:layout_margin="5dp" 
         android:src="@drawable/image" /> 

        <TextView 
         android:id="@+id/info_text" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="@string/name" 
         android:textSize="?android:attr/textAppearanceLarge" 
         android:layout_margin="20dp" 
         android:textColor="#ffffff" 
         android:textIsSelectable="true" /> 

       </LinearLayout> 

       <TextView 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:text="@string/para_text" 
        android:textSize="?android:attr/textAppearanceSmall" 
        android:textColor="#88b0f5" 
        android:padding="5dp" /> 

      </LinearLayout> 

     </android.support.v7.widget.CardView> 

    </LinearLayout> 

這是MainActivity.java文件的內容。

package com.example.android.cardactivity; 

import android.app.Activity; 
import android.os.Bundle; 

public class MainActivity extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 
} 

這就是Android Monitor中出現的所有情況。

04-03 22:55:13.164 20095-20095/com.example.android.cardactivity E/AndroidRuntime: FATAL EXCEPTION: main 
     Process: com.example.android.cardactivity, PID: 20095 
     java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.cardactivity/com.example.android.cardactivity.MainActivity}: android.view.InflateException: Binary XML file line #41: Binary XML file line #41: Error inflating class android.widget.TextView 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
      at android.app.ActivityThread.-wrap11(ActivityThread.java) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loop(Looper.java:148) 
      at android.app.ActivityThread.main(ActivityThread.java:5417) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
     Caused by: android.view.InflateException: Binary XML file line #41: Binary XML file line #41: Error inflating class android.widget.TextView 
      at android.view.LayoutInflater.inflate(LayoutInflater.java:539) 
      at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
      at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
      at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:393) 
      at android.app.Activity.setContentView(Activity.java:2166) 
      at com.example.android.cardactivity.MainActivity.onCreate(MainActivity.java:10) 
      at android.app.Activity.performCreate(Activity.java:6237) 
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
      at android.app.ActivityThread.-wrap11(ActivityThread.java) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loop(Looper.java:148) 
      at android.app.ActivityThread.main(ActivityThread.java:5417) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
     Caused by: android.view.InflateException: Binary XML file line #41: Error inflating class android.widget.TextView 
      at android.view.LayoutInflater.createView(LayoutInflater.java:645) 
      at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58) 
      at android.view.LayoutInflater.onCreateView(LayoutInflater.java:694) 
      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:762) 
      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
      at android.view.LayoutInflater.rInflate(LayoutInflater.java:835) 
      at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
      at android.view.LayoutInflater.rInflate(LayoutInflater.java:838) 
      at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
      at android.view.LayoutInflater.rInflate(LayoutInflater.java:838) 
      at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
      at android.view.LayoutInflater.rInflate(LayoutInflater.java:838) 
      at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
      at android.view.LayoutInflater.inflate(LayoutInflater.java:515) 
      at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
      at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
      at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:393) 
      at android.app.Activity.setContentView(Activity.java:2166) 
      at com.example.android.cardactivity.MainActivity.onCreate(MainActivity.java:10) 
      at android.app.Activity.performCreate(Activity.java:6237) 
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
      at android.app.ActivityThread.-wrap11(ActivityThread.java) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loop(Looper.java:148) 
      at android.app.ActivityThread.main(ActivityThread.java:5417) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
     Caused by: java.lang.reflect.InvocationTargetException 
      at java.lang.reflect.Constructor.newInstance(Native Method) 
      at android.view.LayoutInflater.createView(LayoutInflater.java:619) 
      at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58) 
      at android.view.LayoutInflater.onCreateView(LayoutInflater.java:694) 
      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:762) 
      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
      at android.view.LayoutInflater.rInflate(LayoutInflater.java:835) 
      at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
      at android.view.LayoutInflater.rInflate(LayoutInflater.java:838) 
      at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
      at android.view.LayoutInflater.rInflate(LayoutInflater.java:838) 
      at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
      at android.view.LayoutInflater.rInflate(LayoutInflater.java:838) 
      at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
      at android.view.LayoutInflater.inflate(LayoutInflater.java:515) 
      at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
      at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
      at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:393) 
      at android.app.Activity.setContentView(Activity.java:2166) 
      at com.example.android.cardactivity.MainActivity.onCreate(MainActivity.java:10) 
      at android.app.Activity.performCreate(Activity.java:6237) 
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
      at android.app.ActivityThread.-wrap11(ActivityThread.java) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loop(Looper.java:148) 
      at android.app.ActivityThread.main(ActivityThread.java:5417) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
     Caused by: java.lang.UnsupportedOperationException: Can't convert to dimension: type=0x1 
      at android.content.res.TypedArray.getDimensionPixelSize(TypedArray.java:666) 
      at android.widget.TextView.<init>(TextView.java:1055) 
      at android.widget.TextView.<init>(TextView.java:671) 
      at android.widget.TextView.<init>(TextView.java:667) 
      at java.lang.reflect.Constructor.newInstance(Native Method) 
      at android.view.LayoutInflater.createView(LayoutInflater.java:619) 
      at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58) 
      at android.view.LayoutInflater.onCreateView(LayoutInflater.java:694) 
      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:762) 
      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
      at android.view.LayoutInflater.rInflate(LayoutInflater.java:835) 
      at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
      at android.view.LayoutInflater.rInflate(LayoutInflater.java:838) 
      at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
      at android.view.LayoutInflater.rInflate(LayoutInflater.java:838) 
      at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
      at android.view.LayoutInflater.rInflate(LayoutInflater.java:838) 
      at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
      at android.view.LayoutInflater.inflate(LayoutInflater.java:515) 
      at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
      at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
      at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:393) 
      at android.app.Activity.setContentView(Activity.java:2166) 
      at com.example.android.cardactivity.MainActivity.onCreate(MainActivity.java:10) 
      at android.app.Activity.performCreate(Activity.java:6237) 
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
      at android.app.ActivityThread.-wrap11(ActivityThread.java) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loop(Looper.java:148) 
      at android.app.ActivityThread.main(ActivityThread.java:5417) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
+0

可能是你的'文本視圖'沒有得到一個視圖。你的主線沒有10號線? –

+0

@jaydroider你能告訴更多的東西嗎?或者如果可能的話,您是否可以建議更改爲代碼?在此先感謝:) –

+0

如果完成,你可以發佈你的主要活動整個代碼。 –

回答

2

您分配屬性android:textSize?android:attr/textAppearanceLarge無效值。您應該值,而不是分配給android:textAppearance如下:

<TextView 
    android:id="@+id/info_text" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/name" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:layout_margin="20dp" 
    android:textColor="#ffffff" 
    android:textIsSelectable="true" /> 

java.lang.UnsupportedOperationException:無法轉換爲維度: 類型=爲0x1

以上是其中的關鍵部分堆棧跟蹤底部發現的異常,可以幫助您找出錯誤。

基本上屬性android:textSize需要一個值的維度。

?android:attr/textAppearanceLarge不是一個維度值,因此應用程序在嘗試將其轉換爲一個時會崩潰。

+0

我認爲這是一個正確的答案... –

+0

謝謝。我應該早點來到這裏:) –

+0

@ARTofFeeding不客氣。我添加了一些更詳細的信息,告訴我如何找到可能在未來幫助你的錯誤。 –

相關問題