我的应用程序有一堆xml布局文件。现在,我想添加一个功能,其中一个定义的数字,即15个,将包含在一个活动中。每次活动开始时,应随机挑选15个布局。我怎么做?我在考虑一个数组但是找不到关于如何在数组中包含xml文件的任何好的参考(随机)。
答案 0 :(得分:6)
布局参考是整数。您只需选择一个:
int[] layouts = new int[] {R.layout.one, R.layout.two, R.layout.three ...};
setContentView(layouts[new Random().nextInt(layouts.length)]);
答案 1 :(得分:1)
您可以覆盖Application.onCreate或在您的主Activity.onCreate()中,并在SharedPreference中设置所需布局的资源ID。
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)];
}
然后可以使用setContentView()在app中的某个地方使用此ID。
private static final int DEFAULT_ID = R.layout.default;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
setContentView(getInt(MyApplication.LAYOUT_ID, DEFAULT_ID));
如果您在主Activity中执行此操作,即使在方向更改或类似事件上也可能会应用新布局。