如何使随机字符串取代textview



我有一个3个edittext和一个按钮的活动。我有2个textview的第二个活动。

当按钮被点击时,我想要两个随机的edittext值从activity1来取代textviews上的activey2的文本。

我设法做到了,但不是随机的。我怎样才能使它随机呢?

这是第一个活动。

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"));

在你的第二个活动中:

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));

从以前的活动添加字符串(例如:getIntent().getExtras().getString("prvi")到ArrayList

然后直接做Collection.shuffle(your_list);

ArrayList &设置为你的TextViews

  1. 声明一个包含以下值的数组:

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];`
    

    你可以像这样编辑@Joe Frostick的表单:

    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]); 
    

    谢谢大家的帮助,我真的没有想到这么短的时间里有这么多的答案。你是最棒的!

    最新更新