Страницы

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

вторник, 31 декабря 2019 г.

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

#java #android


Как выводить рандомную строку после остановки анимации, например? 
На данный момент у меня реализовано так:

    @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.

    


Ответы

Ответ 1



В ресурсах можно хранить массивы Mercury Venus Earth Mars Resources res = getResources(); String[] planets = res.getStringArray(R.array.planets_array);

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

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