2011-03-10 74 views
10

我的問題可能很簡單,我太愚蠢了。 我已經在我的layout.xml文件中定義了一個LinearLayout,並且想要在代碼中設置背景可繪製。LinearLayout findViewById問題

layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/linlay" 
android:orientation="vertical" 
android:layout_width="fill_parent"> 
</LinearLayout> 

的.java

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    LinearLayout ln = (LinearLayout) this.findViewById(R.id.linlay); 
    setContentView(ln); 
    ln.setBackgroundDrawable(getResources().getDrawable(R.drawable.wallpaper)); 
} 

如果我運行它說該應用程序已意外停止的應用程序。 有什麼想法?

回答

11

您必須設置佈局從資源

setContentView(R.layout.my_layout); 

然後就可以調用findViewById()

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.my_layout); // add this code 
    LinearLayout ln = (LinearLayout) this.findViewById(R.id.linlay); 
    ln.setBackgroundDrawable(getResources().getDrawable(R.drawable.wallpaper)); 
} 

你的情況,你可以簡單地通過增加設置在XML資源文件桌布活動LinearLayout

android:background="@drawable/wallpaper" 
+0

由於之前在XML佈局加載,但我想,之前並沒有擦出火花。我知道我可以在xml文件中設置背景,但是我的真正問題有點複雜,我需要在java中設置背景。那麼還有其他錯誤嗎? – 2011-03-10 18:18:36

+0

好吧:D對不起,我可能做了一些其他的事情是錯誤的,因爲一個新的項目就像描述的那樣工作。非常感謝大家。 – 2011-03-10 18:37:30

2

您未加載佈局

你需要使用findViewById你的答案

setContentView(R.layout.aLayout);