0

當用戶按下一個按鈕,我想切換到「細節」的佈局是這樣的:Android:爲什麼我的線性佈局在運行時切換時崩潰?

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/layoutDetails" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 


     <TextView android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textStyle="bold" 
      android:textSize="16dp" 
      android:textColor="#ff0000" 
      android:text="Category" />  

     <TextView android:id="@+id/tv_category" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="16dp" 
      android:layout_marginLeft="10dp" /> 

</LinearLayout> 

,這是我是多麼想打開它:

switch(item.getItemId()) 
       { 
       case ID_DETAILS: 
        // show new layout to for details     
        LinearLayout detailsLayout = (LinearLayout) findViewById(R.id.layoutDetails); 
        LayoutInflater detailsvi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
        View detailsv = detailsvi.inflate(R.layout.activity_details, null); 

// IT CRASHES ON THIS LINE 
        detailsLayout.addView(detailsv,new LinearLayout.LayoutParams(detailsLayout.getLayoutParams().width, detailsLayout.getLayoutParams().height)); 

          return true; 
} 

它給空指針異常錯誤!!!

08-09 17:23:47.146: E/AndroidRuntime(1572): FATAL EXCEPTION: main 
08-09 17:23:47.146: E/AndroidRuntime(1572): java.lang.NullPointerException 
+0

「R.layout.activity_details」是否存在? – jebar8 2012-08-09 21:37:55

+0

是的,我上面粘貼的xml確實來自activity_details :) – infinitloop 2012-08-09 21:39:14

+0

按照下面的步驟打破你的循環,並告訴我們發生了什麼。 – 2012-08-09 21:43:20

回答

1

這裏是你如何解決這個問題:

1)將斷點上crashline並在調試模式下運行。你可以立即看到detailLayout是否爲null。如果沒有,請執行步驟2同時檢查detailsv是否爲空。

2)詳情 Object o1 = etailsLayout.getLayoutParams(); //檢查它是否爲空。

它必須是一個或另一個。

更新:由於其detailsLayout實際上是空的。它必須是要麼

1)的setContentView未事先叫requsting detailsLayout,或 2)的setContentView被設置爲沒有定義detailsLayout的佈局,或 3)的setContentView被正確稱爲但detailsLayout是不正確的id在該佈局文件中。

它必須是這三個之一。

相關問題