2015-10-04 2 views
-1

Я просмотрел много статей и нашел похожие, но не нашел ни одного, что позволило мне исправить проблему.setText вызывает проблемы

Я пытаюсь создать генератор случайных чисел, и я не могу получить случайное число, чтобы попасть в текстовое поле. Это кажется таким простым, и я не уверен, что происходит. «SetText» постоянно выдает ошибку «Can not solve method» setText (Java.lang.String) »

Код в моем случайном порядке может быть немного странным. Я пробовал разные вещи, чтобы заставить его работать, и это самая последняя попытка.

private Randomizer mRandomizer = new Randomizer(); 

Button rollButton; 
GridLayout gridLayout; 
Spinner fourspinner; 
Spinner sixspinner; 
Spinner eightspinner; 
Spinner tenspinner; 
Spinner twentyspinner; 
Spinner hundredspinner; 
TextView resultText; 
Random randDice; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    rollButton = (Button)findViewById(R.id.rollButton); 
    gridLayout = (GridLayout)findViewById(R.id.gridLayout); 
    fourspinner = (Spinner)findViewById(R.id.fourspinner); 
    sixspinner = (Spinner)findViewById(R.id.sixspinner); 
    eightspinner = (Spinner)findViewById(R.id.eightspinner); 
    tenspinner = (Spinner)findViewById(R.id.tenspinner); 
    twentyspinner = (Spinner)findViewById(R.id.twentyspinner); 
    hundredspinner = (Spinner)findViewById(R.id.hundredspinner); 
    resultText = (TextView)findViewById(R.id.resultText); 

    View.OnClickListener listener = new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // click the Button! 

      String resultText = ""; 

       randDice = new Random(); 
      for(int i = 0; i < 10; i++){ 
       resultText += String.valueOf(randDice.nextInt()) + "\n"; 
      } 

       resultText.setText(""+resultText); 
       //resultText.(diceRoll); 

     } 
    }; 
    rollButton.setOnClickListener(listener); 
} 
+0

Здесь Строка и текстовое изображение имеют одно и то же имя. – Shriram

+0

используйте другое имя для экземпляров TextView и String – desmondtzq

+0

попробуйте использовать другое имя переменной для Textview и resultString. –

ответ

0

Вы должны переименовать свой TextView или строку «resultText» - это не сработает, если вы используете одно и то же имя переменной дважды. Проблема заключается в том, что вы пытаетесь вызвать setText на своей строке, а не на вашем TextView, так как вы объявляете «resultText» строкой в ​​методе onCreate.

0

Это потому, что вы ссылаетесь на локальную переменную resultText String, чтобы установить ее как textview. Он не может ссылаться на текстовое представление, которое вы объявили в классе, потому что внутри слушателя оно ссылается на строку.

Изменение TextView т.е.

resultText = (TextView)findViewById(R.id.resultText); 

на что-то другое, как

resultTextTextView = (TextView)findViewById(R.id.resultText); 

и использовать его в качестве

resultTextTextView.setText(""+resultText); 

или использовать класс активности или префикса фрагмента, как

MyActivity.this.resultText.setText(""+resultText); 
0

Вы объявили две переменные с тем же именем:

TextView resultText 

и

String resultText 

На практике String переменных (которая объявлена ​​внутри метода) является hiding переменной TextView. Чтобы устранить проблему, переименуйте локальную строковую переменную (и ее использование) в, например,

String result 
+0

Спасибо, я не могу поверить, что пропустил это. – Andrew

Смежные вопросы