2013-06-18 73 views
1

我的應用程序有一堆xml佈局文件。現在,我想添加一個功能,其中一個已定義的數字(即15個)將包含在一個活動中。每次活動開始時,應該隨機挑選15個佈局。我怎麼做?我在想一個數組,但沒有找到任何關於如何在數組中包含xml文件的好的參考(隨機)。如何在android中顯示隨機xml佈局

回答

6

佈局引用是整數。您可以通過簡單地選擇一個:

int[] layouts = new int[] {R.layout.one, R.layout.two, R.layout.three ...}; 

setContentView(layouts[new Random().nextInt(layouts.length)]); 
+0

@downvote,有什麼評論? – njzk2

+0

-1:現在你給0,1,2作爲可能的整數。這不一定等同於佈局ID。你會希望有'setContentView(layouts [new Random()。nextInt(layout.length)]);' – tilpner

+0

我已經嘗試了一種類似於你的建議的方法,它適用於隨機顯示我的所有佈局。但我如何「動態(?)」定義我的100個佈局中的哪一個將它作爲隨機選擇(例如只有15個)? – jay

1

您可以覆蓋Application.onCreate或在你的主Activity.onCreate(),並設置您所需佈局的資源ID在SharedPreference。

public static final String LAYOUT_ID = "random.layout.id"; 
private static int[] LAYOUTS = new int[] { R.layout.default, R.layout.fancy }; 

public void onCreate() { 
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
    prefs.edit().putInt(LAYOUT_ID, getRandomLayoutId()).commit(); 
} 

private int getRandomLayoutId() { 
    Random r = new Random(Calendar.getInstance().getTimeInMillis()); 
    return LAYOUTS[r.nextInt(LAYOUTS.length)]; 
} 

這個id然後可以在你的應用程序的某個地方用setContentView()來使用。

private static final int DEFAULT_ID = R.layout.default; 

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
setContentView(getInt(MyApplication.LAYOUT_ID, DEFAULT_ID)); 

如果在您的主要活動做它甚至可能在方向改變或類似事件應用新的佈局。