我有一个包含3个edittexts和一个按钮的活动。 我有第二个活动,有2个textviews。
单击按钮时,我需要来自activity1的两个随机edittexts值来替换activity2上textview上的文本。
我设法做到了,但不是随机的。我该如何随意制作?
这是第一项活动。
final EditText et = (EditText) findViewById(R.id.editText);
final EditText et1 = (EditText) findViewById(R.id.editText2);
final EditText et2 = (EditText) findViewById(R.id.editText3);
Button btn = (Button) findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick (View v){
Intent i = new Intent(MainActivity.this, postavke.class);
i.putExtra("prvi", et.getText().toString());
i.putExtra("drugi", et1.getText().toString());
i.putExtra("treci", et2.getText().toString());
startActivity(i);
}
});
}
这是第二项活动。
TextView tv = (TextView) findViewById(R.id.asdf);
tv.setText(getIntent().getExtras().getString("prvi"));
TextView dr = (TextView) findViewById(R.id.asdg);
dr.setText(getIntent().getExtras().getString("drugi"));
答案 0 :(得分:2)
在你的第二项活动中:
String[] texts = new String[]{
getIntent().getExtras().getString("prvi"),
getIntent().getExtras().getString("drugi"),
getIntent().getExtras().getString("treci"),
};
TextView tv = (TextView) findViewById(R.id.asdf);
TextView dr = (TextView) findViewById(R.id.asdg);
Random random = new Random();
tv.setText(texts[random.nextInt(3)]);
dr.setText(texts[random.nextInt(3)]);
或者,对于唯一值:
第一项活动:
final EditText et = (EditText) findViewById(R.id.editText);
final EditText et1 = (EditText) findViewById(R.id.editText2);
final EditText et2 = (EditText) findViewById(R.id.editText3);
Button btn = (Button) findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick (View v){
ArrayList<String> texts = new ArrayList<>();
texts.add(et.getText().toString());
texts.add(et1.getText().toString());
texts.add(et2.getText().toString());
Intent i = new Intent(MainActivity.this, postavke.class);
i.putExtra("texts", texts);
startActivity(i);
}
});
}
第二项活动:
ArrayList<String> texts = getIntent().getExtras().getStringArrayList("texts");
TextView tv = (TextView) findViewById(R.id.asdf);
TextView dr = (TextView) findViewById(R.id.asdg);
Collections.shuffle(texts);
tv.setText(texts.get(0));
dr.setText(texts.get(1));
答案 1 :(得分:0)
将您之前的活动中的字符串(例如:getIntent().getExtras().getString("prvi"
))添加到ArrayList
。
然后只做Collection.shuffle(your_list);
从ArrayList
&amp;获取物品将其设置为TextViews
。
答案 2 :(得分:0)
public String[] randomAnswers = new String[3]; //3 because you said you have 3 random strings
在onCreate()中将值添加到数组中:
randomAnswers[0] = getIntent().getExtras().getString("prvi");
randomAnswers[1] = getIntent().getExtras().getString("drugi");
randomAnswers[2] = getIntent().getExtras().getString("treci");
选择两个随机值:
private static final Random RANDOM = new Random(); //in java.util package
在onCreate中:
final int randomInt1 = RANDOM.nextInt(3); //nextInt(int) goes from 0 to int-1, considering arrays start at index=0 we want to get a random number from: 0, 1, 2
int randomInt2;
do {
randomInt2 = RANDOM.nextInt(3);
} while (randomInt1 == randomInt2);
final String firstRandomString = values[randomInt1];
final String secondRandomString = values[randomInt2];`
答案 3 :(得分:0)
你可以使用像@Joe Frostick answere的编辑形式这样的东西:
String[] texts = new String[]{
getIntent().getExtras().getString("prvi"),
getIntent().getExtras().getString("drugi"),
getIntent().getExtras().getString("treci"),
};
TextView tv = (TextView) findViewById(R.id.asdf);
TextView dr = (TextView) findViewById(R.id.asdg);
Random random = new Random();
texts.remove(random.nextInt(3));
tv.setText(texts[0]);
dr.setText(texts[1]);
答案 4 :(得分:0)
感谢大家的帮助,我真的没想到在很长时间内没有这么多答案。你是最棒的!