2017-09-27 25 views
1

我有点难以接受我接下来要做的事情。我试图创建一个应用程序,当按下按钮时,它会生成一个报价。最初当我按下按钮时,会出现一个单词,但当我尝试再次按下该按钮时,它不会打印出另一个单词。Android工作室 - 协助按钮重复

package com.example.under.funfacts; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

import java.util.ArrayList; 
import java.util.Collections; 
import java.util.List; 
import java.util.Random; 
import java.util.Scanner; 
import java.util.*; 

import static com.example.under.funfacts.R.id.PressMe; 
import static com.example.under.funfacts.R.id.quote; 
import static com.example.under.funfacts.R.id.text2; 

public class MainActivity extends AppCompatActivity { 
TextView txt; 
Button btn; 

String[] quotes = new String[] {"texas", "jersey", "Pennsylvania", "Tennessee", "Mississippi"}; 
String randomQuote = quotes[(int) (Math.random()*quotes.length)]; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    txt = (TextView) findViewById(R.id.quote); 
    Button btn = (Button) findViewById(R.id.PressMe); 
    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      txt.setText(randomQuote); 


     } 
    }); 
} 
} 

我知道我可以为引号列出一个列表,但不幸的是我不知道如何实现它。 希望我错过了一个小细节,因为我想多次按下按钮,以便可以看到多个单词或引号。

回答

0

您的randomQuote变量只设置一次。您应该将其声明移至onClick()方法中。这样,它会得到设定每次点击按钮:上josmith42的答案

btn.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     String randomQuote = quotes[(int) (Math.random()*quotes.length)]; 
     txt.setText(randomQuote); 
    } 
}); 
0

大厦,如果你想继续增加的话的文字,您可以检索,而不是担心一个List现有文本。类似这样的:

btn.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     CharSequence currentText = txt.getText(); 
     String randomQuote = quotes[(int) (Math.random()*quotes.length)]; 

     if (currentText.length() == 0) { 
      txt.setText(randomQuote); 
     } else { 
      txt.setText(currentText + " " + randomQuote); 
     } 
    } 
});