2016-02-20 57 views
2

我在獲取佈局ID時遇到問題。按ID搜索佈局

splash.xml

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

</LinearLayout> 

java文件

@Override 
protected void onCreate(Bundle savedStateInstance) { 
    super.onCreate(savedStateInstance); 
    setContentView(R.layout.splash); 

    int imgId[] = new int[] { R.drawable.splash_img1, R.drawable.splash_img2 }; 
    Random random = new Random(); 
    int result = random.nextInt(imgId.length); 
    LinearLayout layout = (LinearLayout) findViewById(R.layout.splash); 
    layout.setBackgroundDrawable(getResources().getDrawable(imgId[result])); 

} 

每當我跑,我得到一個搖籃打造的 「未定義佈局」 的錯誤。

+1

你只能找到ID的看法,如果你已經設置首先在xml中使用Id。使用'R.layout.xxx'作爲一個整體返回xml佈局文件,而是使用'R.id.xxx',它返回佈局文件中感興趣的元素/視圖的Id(因此'findViewById') –

回答

2

您可以通過R.id.layout_id獲取layout

增加號碼至您的layout文件

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/splash_layout" // <-- this to your code. 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/splash_img1" > 

</LinearLayout> 

添加到您的.java文件

@Override 
protected void onCreate(Bundle savedStateInstance) { 
    super.onCreate(savedStateInstance); 
    setContentView(R.layout.splash); 

    int imgId[] = new int[] { R.drawable.splash_img1, R.drawable.splash_img2 }; 
    Random random = new Random(); 
    int result = random.nextInt(imgId.length); 

    // edit this part. 
    LinearLayout layout = (LinearLayout) findViewById(R.id.splash_layout); 
    layout.setBackgroundDrawable(getResources().getDrawable(imgId[result])); 

希望這有助於:)

+0

Doesn' t android:id =「@ + id/splash_layout」與setContentView衝突(R.layout.splash);即後者應該是setContentView(R.layout.splash_layout); – MikeT

+1

@MikeT視圖ID與佈局文件名/標識符分開/不同地存儲。所以,不,它不衝突。 –

+0

有力的工作伴侶。感謝您的信息,一直在這困擾着這個小時 –