如何使随机字符串替换textview?

时间:2015-09-28 10:00:01

标签: java android string random android-studio

我有一个包含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"));

5 个答案:

答案 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)

  1. 声明一个包含值的数组:
  2. public String[] randomAnswers = new String[3]; //3 because you said you have 3 random strings

    1. 在onCreate()中将值添加到数组中: randomAnswers[0] = getIntent().getExtras().getString("prvi"); randomAnswers[1] = getIntent().getExtras().getString("drugi"); randomAnswers[2] = getIntent().getExtras().getString("treci");

    2. 选择两个随机值:

    3. 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)

感谢大家的帮助,我真的没想到在很长时间内没有这么多答案。你是最棒的!