2017-01-31 6 views
0

Я создал кнопку, которая отображает случайное изображение каждый раз, когда вы нажимаете на него. Однако: - очень медленно отображать изображения - иногда мне нужно нажать 2 раза на кнопку, чтобы он отображал новое случайное изображение.Приложение для Android: авария Java при нажатии на кнопку, которая должна отображать случайное изображение

Почему?

Затем я добавил несколько изображений в моем Drawable и теперь сбои приложения после показа 2 изображения ...

Почему?

Вот ява коды - надеюсь, все понятно, и вы можете дать мне руку

общественный класс nextActivity расширяет активность {

int[] cards = {R.drawable.image1, 
     R.drawable.image2, 
     R.drawable.image3, 
     R.drawable.image4, 
     R.drawable.image5, 
     ... 
     R.drawable.image32, 
     R.drawable.image33}; 

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

    // initializing the image view 
    ImageView m_imgRandom = (ImageView) findViewById(R.id.imgRandom); 

    // choosing a random number from 0 to 33 
    int n = new Random().nextInt(33); 

    // choosing the random image from cards array using the random number 
    m_imgRandom.setImageResource(cards[n]); 




    Button myButtonRoll = (Button) findViewById(R.id.buttonRoll); 
    myButtonRoll.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Log.i("openclass", "yay it works!"); 

      ImageView myRollAgain = (ImageView) findViewById(R.id.imgRandom); 

      // choosing a random number from 0 to 33 
      int n = new Random().nextInt(33); 

      // choosing the random image from cards array using the random number 
      myRollAgain.setImageResource(cards[n]); 
     } 

    }); 

} 

} `

+0

Опубликовать stacktrace и, возможно, ваш макет xml. Это * может быть проблемой в AndroidStudio, которую можно разрешить через File> Invalidate cache. – Haem

ответ

0
ImageView m_imgRandom = (ImageView) findViewById(R.id.imgRandom); 
ImageView myRollAgain = (ImageView) findViewById(R.id.imgRandom); 

Вы впрыснуть тот же вид в два раза, вы уже ввели его в m_imgRandom, внутри вашего onCLick не вводите его снова, просто используйте то же самое:

m_imgRandom.setImageResource(cards[n]); 

Конечно, если это другое изображение, укажите другой идентификатор.

+0

Спасибо! это, должно быть, было частью проблемы. Теперь он отображает больше изображений массива, однако иногда он иногда падает. Может ли это быть связано с размером определенных изображений? – Astrid