Страницы

Поиск по вопросам

пятница, 21 декабря 2018 г.

Как выводить рандомную строку?

Как выводить рандомную строку после остановки анимации, например? На данный момент у меня реализовано так:
@Override public void onAnimationEnd(Animation animation) { //вывод текст здесь String[] texts = {}; Set generated = new HashSet(); Random random = new Random (); int pos = random.nextInt(texts.length);
((TextView) findViewById(R.id.myTextView)).setText(texts[pos]); }
@Override public void onAnimationRepeat(Animation animation) {
} });
Но проблема в том, что значений в String[] texts = {раз, два, ......, тысяча}; больше тысячи это во первых, а во вторых хотелось бы хранить все в строках, так как в дальнейшем планируется локализация для разных языков.

@Override public void onAnimationEnd(Animation animation) { //вывод текст здесь
Resources res = getResources(); String[] planets = res.getStringArray(R.array.planets_array);
Set generated = new HashSet(); Random random = new Random (); int pos = random.nextInt(R.array.planets_array);
((TextView) findViewById(R.id.myTextView)).setText(planets[pos]);

}
@Override public void onAnimationRepeat(Animation animation) {
} });
}
}

CatLog выдает следующее:
-09 23:03:08.846 3579-3579/ru.infernal93.butilochka E/AndroidRuntime: FATAL EXCEPTION: main Process: ru.infernal93.butilochka, PID: 3579 java.lang.ArrayIndexOutOfBoundsException: length=4; index=2122146214 at ru.infernal93.butilochka.ActivityGame$2.onAnimationEnd(ActivityGame.java:81) at android.view.animation.Animation$3.run(Animation.java:376) at android.os.Handler.handleCallback(Handler.java:742) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:5527) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629) 10-09 23:03:08.848 3579-3579/ru.infernal93.butilochka E/MQSEventManagerDelegate: failed to get MQSService.


Ответ

В ресурсах можно хранить массивы
Mercury Venus Earth Mars

Resources res = getResources(); String[] planets = res.getStringArray(R.array.planets_array);

Комментариев нет:

Отправить комментарий