1

Android アプリの TextView を同じクラスの別の TextView にランダムに設定したいと思います。私はこれを試しました:

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pop = (TextView) findViewById(R.id.popUSA);
poprank = (TextView)findViewById(R.id.poprankUSA);
randomUSA = (TextView) findViewById(R.id.randomUSA);
Random randomStat = new Random();
int random = (randomStat.nextInt(2));

if (random == 1){
randomUSA.setText(pop +"");
if (random == 2){
randomUSA.setText(poprank+"");          
}};

}

そして、それはうまくいきませんでした。代わりにランダムなテキストが表示され、アプリを再度開いても変化しませんでした。また、誰かが TextView を更新して別のランダムなボタンとして設定するボタンを作成する方法を教えてください。ありがとうございました

4

1 に答える 1

0

初めに、

これを行ったときに、オブジェクトの参照 ID を設定しています。

randomUSA.setText(pop +"");

そのため、奇妙なテキストが表示されます。

代わりにこれを使用して、

randomUSA.setText(pop.getText()) 

2番、

私の意見では、Random.nextInt(2) は 2 を返すことはなく、0 または 1 のみを返します。結果として 1 または 2 を探している場合は、代わりに (randomStat.nextInt(2) + 1) を使用してください。

三番、

ボタンを ID で参照し、オンクリック リスナーを設定します。

Button refresherButton = (Button) findViewById(R.id.refersherButton);
refresherButton .setOnClickListener(new View.OnClickListener() {
    public void onClick(View view) {
        randomUSA.setText(pop.getText());
    }
});

コードで更新します。

setContentView(R.layout.activity_main);
pop = (TextView) findViewById(R.id.popUSA);
poprank = (TextView) findViewById(R.id.poprankUSA);

// I would suggest you to pre-set something into this two textview,
// so that you can get it later.
// But of course you should set it base on your application logic, not hardcode
pop.setText("Population: 316,668,567");
poprank.setText("Population Rank: 3");

randomUSA = (TextView) findViewById(R.id.randomUSA);
bRandomusa = (Button) findViewById(R.id.bRandom);
Random randomStat = new Random();

int firstRandom = randomStat.nextInt(2);
if (firstRandom == 0) {
    randomUSA.setText(pop.getText());
}else if (firstRandom == 1) {
    randomUSA.setText(poprank.getText());
}

//Use setTag here, for cleaner codes
bRandomusa.setTag(randomStat);
bRandomusa.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Random randomStat = (Random) v.getTag();
        int random = randomStat.nextInt(2);
        if (random == 0) {
            randomUSA.setText(pop.getText());
        }else if (random == 1) {
            randomUSA.setText(poprank.getText());
        }
    }
});
于 2013-05-02T02:17:55.173 に答える