2015-09-28 78 views
0

我有一个活动,3个edittexts和一个按钮。 我有2个textviews的第二个活动。如何使随机字符串替换textview?

当按钮被点击时,我想从activity1中获得两个随机的edittexts值来替换activity2上textviews上的文本。

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

这是第一项活动。

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

你是什么意思*随机* – Blackbelt

+0

我认为他有2个插槽,3个值,并且想要使用随机选择的3个值中的2个 –

+0

@Tomo两个“TextView”都可以包含相同的值吗? –

回答

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

随机数可能会生成相同的数字。最好是创建一个随机数并从数组中删除索引,如下所示: texts.remove [random.nextInt(3)]];然后使用其他文本数组元素。 – pooyan

+0

这应该可以工作,但有33%的几率会是相同的字符串 –

+0

刚发布最简单的答案!没有提到希望他们是唯一的 – JoeyJubb

0

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

然后做简单Collection.shuffle(your_list);

获取项目从ArrayList &它设置为您TextViews

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

    感谢大家的帮助,我真的在没有多少时间的情况下没有期待这么多答案。你是最好的!

    +0

    这就是StackOverflow的要点。我们所有人都会在某一天发布问题。并且试图回答问题是学习新功能的好方法;)每天都有 – Fundhor