每当我重新打开应用程序时,我都希望将单选按钮随机化。
例如,我的布局如下:
RBtn1
Rbtn2
Rbtn3
Rbtn4
现在,我想在每次打开特定活动时都将它们洗牌。我该怎么办?
答案 0 :(得分:0)
据我所知,Layouts
中的resources
是不可变的。这意味着您必须以动态或Java方式制作Views
。
您可以做的是使用SecureRandom类(比选择随机数更准确的随机性)来选择一个随机数,然后从RadioButton数组中获取一个RadioButton对象。
PoC :我首先用现在编写并经过测试的代码进行解释→
import java.util.*;
public class HelloWorld{
static String los1 = "taotao1";
static String los2 = "taotao2";
static String los3 = "taotao3";
static String los4 = "taotao4";
static String[] X = {los1,los2,los3,los4};
public static void main(String []args){
Collections.shuffle(Arrays.asList(X));
System.out.println(Arrays.toString(X));
}
/*
Test 1 : [taotao4, taotao3, taotao2, taotao1]
Test 2 : [taotao2, taotao3, taotao4, taotao1]
Test 3 : [taotao3, taotao4, taotao1, taotao2]
Test 4 : [taotao2, taotao4, taotao1, taotao3]
*/
}
说明:Collections.shuffle
将数组中的对象随机播放,您可以通过运行代码来查看。
概念代码:我说的是概念性的,因为无需测试即可直接在Stack Answer Box中编写,测试由您完成。
public class NoNotHelloWorld extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
RadioButton r1,r2,r3,r4; //please declare to avoid NullPtr and also declare their functionalities
LinearLayout xyz = (LinearLayout)findViewById(R.id.xyzwhatisthis);
//though unnesseary cast, but I did it.
ArrayList<RadioButton> dydx = new ArrayList<RadioButton>();
dydx.add(r1);
dydx.add(r2);
dydx.add(r3);
dydx.add(r4);
Collections.shuffle(Arrays.asList(arr));
for(RadioButton dxdy : dydx){
xyz.addView(dxdy)
}
}
}
我认为它应该可以正常工作,否则在其中会有注释框。