2012-03-18 2 views
0

Я хочу вставить оператор for, который увеличивает и отображает строки в TextView, когда пользователь нажимает кнопку «Далее». Но когда я нажимаю кнопку, она отображает «3». Может ли кто-нибудь указать, где я ошибаюсь. ThanxХотите создать для(), состоящую из строк

public void onClick(View v) { 
    // TODO Auto-generated method stub 
    switch(v.getId()){ 
    case R.id.one: 
     break; 
     case R.id.Next: 
      final CharSequence[] items = {"Test", "Test1", "Test3", "Test4"}; 
      for(i=0; i<items.length; i++){ 
      String s = (String)items[i]; 
      info.setText(s); 

    } 

    break; 

} 

} 
+1

Итак ... что такое «проблема»? (Я бы предположил, что вы задали текст * того же * 'элемента' 'text' items.length' раз, что, скорее всего, не то, что вам нужно.) –

ответ

1

Ваши for петли петли, пока последнее значение каждый раз, когда вы щелкните Button. Если вы просто хотите, чтобы показать следующую строку:

// field 
int value = 0; 

public void onClick(View v) { 
    // TODO Auto-generated method stub 
    switch(v.getId()){ 
    case R.id.one: 
     break; 
     case R.id.Next: 
      final CharSequence[] items = {"Test", "Test1", "Test3", "Test4"};    
      if (value < items.length) { 
       String s = (String)items[value]; 
       info.setText(s); 
       value++; 
      } 
    } 

    break; 

} 

} 
+0

по какой-то странной причине, когда я нажимаю кнопку, она печатает «Test» сейчас, но это не распечатывает «Test1», когда я нажимаю его снова. Похоже, что он не увеличивается правильно – Hashey100

+0

@ Hashey100 Не помещайте 'int value = 0;' в метод 'onClick', сделайте это поле в своем классе. – Luksprog

+0

Я только что попробовал, и теперь он печатает «Test4» и просто компилируется и исправляется, если я снова нажимаю его - wierd =/ – Hashey100

0

Использование

String s = (String)items[value % items.length]; 

избежать IndexOutOfBoundsException.